How to Send a Welcome Email Sequence with Clerk
Clerk handles your signup, login and user management. What it deliberately doesn't handle is the part that decides whether those signups turn into users: the emails that arrive in the days after someone creates an account.
That gap is usually filled with a script nobody maintains, or nothing at all. It doesn't have to be. This guide walks through connecting Clerk to Audienceful and shipping a three-email welcome drip that fires the second a new user signs up — no code, no cron job, no POST to a marketing API buried in your auth callback.
What you'll need
- A Clerk application with at least one user (a test account is fine).
- An Audienceful workspace.
- Three short emails. Or, if you'd rather not start from a blank page, the ready-made onboarding template covered in Step 3.
Total setup time is about fifteen minutes, most of which is writing.
How a Clerk welcome sequence actually works
There are three moving parts, and it helps to know which one does what before you start clicking.
- Clerk sends a webhook. When someone creates an account, Clerk fires a
user.createdevent to an endpoint you register in its dashboard. - Audienceful turns that event into a contact. The new user's email, first name and last name land in your audience within seconds, along with their Clerk user ID, signup date and last sign-in date as custom fields.
- An automation enrolls them. Any automation using the Clerk event trigger set to User signed up starts running for that contact — first email immediately, then the rest on the schedule you set.
That's the whole architecture. Your app doesn't call Audienceful; Clerk does. Nothing to deploy, and nothing that breaks the next time you refactor your signup flow.
Step 1: Connect Clerk to Audienceful
In Audienceful, open the Integrations tab, find Clerk, and click Install. This creates a pending connection and shows you two things: a webhook endpoint URL, and a field waiting for a signing secret.
Now switch to your Clerk dashboard:
- Go to Configure → Webhooks and click Add endpoint.
- Paste the endpoint URL from Audienceful into the URL field.
- Subscribe to three events:
user.created,user.updatedanduser.deleted. - Copy the endpoint's signing secret — it starts with
whsec_.
Paste that secret back into Audienceful and click Connect. Saving the secret is what flips the integration live: it's how each incoming delivery gets verified as genuinely from Clerk before anything is written to your audience.
A note on what you're handing over, since it's less than people expect: the integration needs the webhook signing secret and nothing else. No Clerk API keys, no read access to your Clerk account. The data flows one way, and only for the events you subscribed to.
Once connected, the endpoint URL is unique to your workspace. Each new signup arrives already scoped to the right audience.
What gets synced
Every Clerk user who lands in Audienceful arrives with:
- Email address — the primary one on their Clerk profile.
- First name and last name, when Clerk has them.
- Clerk User ID — stored as a custom field, so you can match contacts back to users in your own database.
- Clerk Signed Up and Clerk Last Sign In — timestamps you can segment on later.
user.updated keeps all of that in sync when someone changes their name or email in your app, so your list doesn't quietly rot as users edit their profiles.
One edge case worth knowing: a Clerk user with no email address — phone-only auth, for instance — can't become an email contact, and is skipped rather than half-created.
Step 2: Set your data-handling rules
Before the first real signup arrives, spend thirty seconds on the Data handling card on the integration page. Two settings, both of which matter more than they look.
Marketing consent for new synced users. Signing up for your product is not, on its own, a marketing opt-in — so new contacts default to Unknown. Product and onboarding email still sends to them; what Unknown preserves is an honest record of the fact that nobody ticked a box. Switch it to Granted only if your terms of service genuinely cover email marketing.
When a user is deleted in Clerk. Deleting an account in your app should do something sane on the email side. The default is to unsubscribe the contact — emails stop, but their history and analytics survive. You can also delete the contact outright, or leave it untouched. Pick the one that matches what you tell users in your privacy policy.
There's also a Sync new and updated Clerk users toggle. Leave it on. Turning it off pauses contact writes while still recording events, which is occasionally useful during a migration and never useful otherwise.
Step 3: Start from the onboarding template
Head to Automations → Templates. Set the Works with filter to Clerk (or browse the SaaS industry) and open New account activation, which lives in the Welcome & onboard new subscribers section.
It's a complete three-email drip, already wired to the user.created trigger:
| Step | What happens |
|---|---|
| Email 1 | "Welcome to Company — let's get you set up 🚀" — sends immediately on signup |
| Wait | 1 day |
| Email 2 | "The one thing to do first" — one action, one button |
| Wait | 3 days |
| Email 3 | "Getting the most out of Company" — three habits of your best users |
| Tag | Adds the activated tag |
Click Use this template. Audienceful copies the flow, the three emails and the trigger into your workspace.
Two things happen at that point that are easy to miss. First, if you've filled in your business details, each email is automatically rewritten in your brand's voice, with the placeholder "Company" swapped for your actual product — structure and calls to action intact, copy personalized. Second, the new automation arrives turned off. Nothing sends until you activate it, which gives you room to edit first.
Before it can fire, the template modal also checks your prerequisites and tells you plainly if Clerk isn't connected yet. If you skipped Step 1, this is where you'll find out.
Step 4: Customize the content
The template is a skeleton with good bones, not a finished sequence. Open each email and make it yours.
Email 1 — sent immediately. This is the highest-engagement email you will ever send to this person; they are, right now, looking at their inbox waiting for something from you. Don't waste it on a company history. Confirm their account is ready, name the single next step, and link straight to it. The template's button reads Finish setting up — point it at your real onboarding URL.
Email 2 — one day later. One action. Not a feature tour, not a list of five things. Pick the action that best predicts retention in your product — creating the first project, connecting the first integration, inviting the first teammate — and build the whole email around it.
Email 3 — three days after that. Now you can widen out. The template lists three habits of successful users; replace them with the three that are actually true for your product, and keep them specific enough that someone could do one this afternoon.
A few things worth doing in all three:
- Use merge tags. The template's greeting already pulls in first name, with a fallback to "there" so a contact with no name on file never gets "Hi ,".
- Ask for replies. Replies are one of the strongest signals inbox providers use to decide you belong in the Primary tab. In onboarding, they're also your best source of product feedback.
- Keep one call to action per email. Two buttons means two decisions, which usually means neither.
- Send yourself a test. Test sends render exactly as the real thing — check the mobile view before you activate anything.
Step 5: Check the timing and send window
The template sends on weekdays only by default, which is the right call for most B2B products: engagement drops off a cliff on Saturday and a welcome email that lands then is often the one that never gets opened. If you're consumer-facing, turn weekends back on.
The waits — one day, then three — are a reasonable starting point, not a law. Two things should push you to change them:
- A short trial. If your trial is seven days, a three-day gap eats nearly half of it. Compress.
- A slow product. If it takes a week before anyone has a result worth talking about, stretching the third email out is better than arriving before there's anything to say.
You can also set a goal on the automation — a tag applied, a purchase, a field change — so people who convert stop receiving the rest of the sequence. Nobody who already upgraded should be getting nudged to upgrade.
Step 6: Turn it on and test with a real signup
Activate the automation, then create a genuine test account in your app through your normal Clerk signup flow.
Within a few seconds you should see the new contact in your audience with their Clerk fields populated, an entry in the integration's Recent data card showing the user.created event landing, and email one on its way.
If nothing arrives, work down this list:
- Is the automation active? Templates arrive off, and this is the single most common cause.
- Is
user.createdsubscribed in Clerk? An endpoint with no event subscriptions is a valid endpoint that receives nothing. - Did the endpoint URL come from the right workspace? It's workspace-specific — copying one from a different Audienceful account will fail verification.
- Does the test user have an email address? Phone-only signups are skipped by design.
- Was the signing secret pasted in full? Rotate it in the Clerk dashboard and re-paste if you're unsure; the field accepts a new secret any time.
Once emails start flowing, automation analytics gives you open and click rates per step. Watch for the step where clicks fall off a cliff — that's the email doing the least work, and it's usually the one asking for too much.
Frequently asked questions
Do I need to write any code? No. The connection is a webhook URL and a signing secret pasted between two dashboards. Your application code doesn't change.
Does this work with Clerk's social logins?
Yes. Clerk fires user.created regardless of how the account was created — email, Google, GitHub, or anything else you've enabled.
What happens if a user changes their email in my app?
Clerk sends user.updated and the contact is updated in place. No duplicate, no stale address.
Can I trigger something other than a welcome sequence?
Yes — user.created, user.updated and user.deleted are all available as automation triggers. Profile updates can move people between audiences; deletions can trigger an offboarding flow before the contact is unsubscribed.
How is this different from sending onboarding emails from my own backend? Two things. You can change the copy and the timing without a deploy, and you get per-user open and click analytics on emails your backend would otherwise send blind. Transactional email from your app is still the right tool for password resets and receipts; onboarding is marketing, and it belongs somewhere a non-engineer can edit it.
Can I combine Clerk signup data with billing data? Yes. If you also connect Stripe, signups arrive from Clerk and revenue events arrive from Stripe, on the same contact — which is what lets you build the full journey from created an account to upgraded to churned. There's more on that in our guide to Stripe-powered lifecycle email.
Start with the first email
If fifteen minutes is more than you have today, do the smallest version: connect Clerk, apply the template, edit email one, and turn it on. A single well-aimed welcome email that actually sends beats a perfect three-part sequence still sitting in drafts.
You can start free and have the first one live before your next signup arrives.
Email? Easy.
Audienceful is how smart companies do AI email newsletters, marketing automation, and transactional email.
