Treatment of unverified emails when adding members via the API

At Viral Loops we have created an integration to add members to Ghost using api.members.add like so:
api.members.add({email: 'dtz@test.com'}, {send_email: true, email_type: 'subscribe'});

This adds the new member but also sends them the signup confirmation email which, at that point is unnecessary. The member is already in Ghost. The confirmation message is there as a safeguard against fake signups. When adding a member via the API, there should be a way to determine how should Ghost treat the new member:

  1. Ask for confirmation, ie. send the confirmation message. In this case the member should be added to Ghost only after they’ve confirmed their email.
    or
  2. Accept them automatically. Useful in cases where the email is already confirmed, eg. if the member passed a double opt-in process prior to being added to Ghost. Viral Loops, for example, supports double opt-in for new sign-ups and if that was enabled, the members we’d send to Ghost would be verified.

From our part, we’ll disable the signup confirmation since it doesn’t add anything to the new member’s experience and wait for any updates on the above.

Thanks!

1 Like

Apologies for the very late bump, but i’d like a response to this exact issue too. Did the OP find a solution to this?

I had the same problem with an API integration to a custom Rails website. What we ended up doing was doing a Ruby version of what the embed signup form does.
So basically just write what is in Ghost/apps/signup-form/src/utils/api.tsx at main ¡ TryGhost/Ghost ¡ GitHub to Ruby.

The only problem with this is just that the ‘members/api’ site is not mentioned in the Ghost docs, so I guess it could be changed at any point and break our Ruby implementation. But at least it is sending the verification email before adding the new member to the site.

1 Like

I am a ViralLoops member, and I would love to continue using the service, but I’m having to implement significant workarounds to make it function properly.

The issue is that the people being referred to us aren’t coming through our website directly—they’re receiving referral links that are texted or sent to them by friends. As a result, they see very little information, and the main problem for many of us arises because we have multiple newsletters. When new members aren’t from our website, the email confirmation you (DO NOT) send is crucial for a reason you may not realize. That email verification email with a magic link redirects them to a welcome page, where we can properly introduce ourselves for the first and only time that we can and, more importantly, allow them to choose which newsletters they want to join and optin to give us the ability to actually communicate with them.

I can’t speak for all Ghost members, but I know that many of us on Ghost Pro would love to use ViralLoops. However, due to email limitations, we’re forced to create complex automations just to get new referrals to opt into a newsletter. With the current setup, they have no way to do that. Our only opportunity to make them aware they need to select a newsletter is during the welcome page, which they reach after clicking the verification email—an email you’re not sending.

Even for those with just one newsletter, they’re still having to create third-party automations with tools like Zapier to automatically add members to a newsletter, or to be able to send them a welcome email since they never see the welcome page that we need them so badly to see to make ViralLoops work.

And a single-newsletter setup still has to assume that’s what the member wants (though this assumption isn’t ideal) is to be subscribed to a newsletter. If they just send a welcome email with instructions through Zapier, the number of members that would overlook that email or think "maybe I will choose my newsletters later is staggering, and if they don’t do it right hten you have lost them. So the best case is the worst and that is just to auto assign them a newsletter and hope they don’t report it as spam since they didn’t technically opt in.

Ghost Pro charges us for every member we have, and if we have no way to communicate with those members because they aren’t opted into a newsletter, they not only provide us no value, but they also become a financial liability.

I’m certain of this: If you changed this and sent the verification email, you would not only retain my business, but I’d be excited to recommend ViralLoops to others. I know several other Ghost users who would become paying customers immediately, who already were once and gave up because of this issue. (3 to be exact, and I am just 1 person) The alternatives are expensive and require technical knowledge and coding skills to function properly.

I’ve been a member for a year (I honestly just forgot to cancel), and when I saw your post, I thought, “Maybe they have no idea.” With the direction Ghost Pro has taken, that welcome page triggered by the verification email is our only chance to introduce ourselves, offer newsletter options, and even give the opportunity to convert free members into paying ones. Without that email and verification, there’s no way for us to communicate with new members unless we use a third-party automation tool like Zapier. If you made this change, I believe your business with Ghost Pro members would explode once word got out. For those not on Ghost Pro, it wouldn’t affect them—you could simply allow us to send the verification email ourselves, solving the issue.

I want to keep using ViralLoops and hope you’ll make this change! Currently, the only way to set up this process is by using the ViralLoops label with a Zapier Pro account to trigger the “Member Added” event, filter for members with the ViralLoops label, and then send a confirmation email. This process consumes about five tasks per referral. A Zapier Pro account with 2,000 tasks costs $50, which means this workaround is expensive and not scalable. As Ghost Pro continues to grow rapidly, this limitation is hurting your potential growth with Ghost users. The ViralLoops integration appears as an option, but 90% of Ghost users—who aren’t tech-savvy—give up when they encounter these complications. If you made this change, you’d gain a significant number of new customers within a few months.

It seems the current setup conflicts with how Ghost Pro websites function. It only adds new users as members but doesn’t provide us with a way to email them without using third-party tools like Zapier, which is both costly and impractical. For those of us with multiple newsletters, our only chance to explain things to new members is during the welcome page, which they access by clicking the verification email that ViralLoops currently does not send.

Ironically, I was just thinking, “I wish ViralLoops worked better with Ghost,” and then I thought, “Surely they know about this problem, so why hasn’t it been fixed?” When I found this post with zero replies, I realized that many others probably feel too overwhelmed to ask, especially since most Ghost Pro users don’t have coding experience.

If I’m missing something, please let me know. I’ve spent about a week working on this issue over the course of a month and eventually gave up, forgetting to cancel my subscription. As much as I’d love to stay, without this change, I’ll have to move on—I’m not willing to pay $50 just to start with a Zapier Pro account to send members the welcome email they need. We have zero marketing capabilities for new members who don’t opt into a newsletter with Ghost Pro.

Sorry for the long reply, I just really would like to make Viral Loops work, and seeing as how it’s setup as an integration for all of Ghost. It just makes more sense to let us do the email verify on this end instead of you. I know why you are doing it that way, because you don’t want to have a bunch of unverified users on your end before they get to us. But the downside is, your ghost customer base has to have a huge cancellation rate and the slowest growth out of the major integration channels you have. If I am wrong, I would be shocked and must be looking at this all wrong, and that would shock me because I spent a literally 40 hour work week on this. Yes I solved the issue, but it’s a nasty, clunky work around and expensive. It ends up being cheaper to go with a competitor once you factor in the zapier cost. Please change it :)
Cheers