BACK TO BLOG
USE CASESNovember 11, 20269 min read

SendPulse With Causality Engine: What Counts as a Conversion

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-11-11

The short answer: when a SendPulse flow shows more conversions than GA4 shows email orders, the flow is not lying. You wrote its definition. SendPulse, an email and chatbot marketing platform, counts a conversion wherever a Goal element sits or a stop event such as Purchase arrives, and its Goal element article names no time window and no revenue. For a shop on SendPulse with purchases in GA4, the verdict is to treat that count as a setting. Tick Add Google Analytics tags on every campaign. Use the Split contacts action, which assigns contacts at random (40% / 60% in its article's example), to leave a share of one flow unmailed. Then compare with Causality Engine, a causal attribution tool whose only input is a GA4 export; its first finding is free at app.causalityengine.ai/start.

Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.

Before you quote a flow's conversion count:

  1. Do the sum the dashboard skips. For example, a cart flow entered 400 times and stopped by Purchase 96 times shows 96 conversions, a rate of 96 ÷ 400 = 24%. Nothing in that figure says how many of the 96 read a reminder.
  2. Use the plumbing already in place. A cart flow already leans on the Purchase event your checkout sends, GA4 records the purchase, and the campaign wizard has the tag checkbox.
  3. Name the comparison. Orders per 100 contacts on a mailed branch against an unmailed branch, over the same days.

The facts in one table

QuestionDocumented answer
What is SendPulse?Email, chatbots, automation and a CRM in one account: entry, homepage
How does it tag links?An Add Google Analytics tags checkbox in each campaign; you name utm_campaign, source and medium are filled in (statistics article)
What does a campaign report?Sent, delivered and read emails, click-throughs, unsubscribes, errors; no orders, no revenue (same article)
What does a flow report?Conversions amount, counted at a Goal element or a stop event (flow statistics)
Which GA4 channel?Email, findable as sendpulse/email (Google's channel rules)
What does Causality Engine read?The Attribution paths CSV out of GA4 and no other source (how it works)
Integration between the twoNone (integrations page)
What does checking cost?The split needs a paid SendPulse plan and nothing more; the first finding is free; a full read is €99 before VAT, checked on 11 November 2026 (pricing)

Tagging comes first: sendpulse/email

In the wizard's third step, Campaign parameters, the Collect statistics section holds two checkboxes, Opens and Clicks, and a third: Add Google Analytics tags. Tick it and enter a campaign name. That name becomes utm_campaign, and SendPulse adds utm_source and utm_medium itself, per its statistics article. The same article says where to look afterwards: Traffic acquisition in GA4, with Session source/medium set to sendpulse/email. Google's channel definitions sort a visit into Email when its medium or its source is email, so those sessions arrive in the right row.

Three things the knowledge base flags, and one it leaves out:

  • The checkbox belongs to one campaign. The article presents it as a step inside each send, so a campaign built without it goes out untagged.
  • Tracking links expire. A campaign's tracked links are valid for 1 year; afterwards tracking stops and the links become inaccessible (campaign guide).
  • Bots click too. Bot detection is a separate switch under Service Settings, Other Settings.
  • Flows are another matter. The Automation Email element article lists no Google Analytics option, and says that Prevent link expirations switches click tracking off for that email. Tag flow links by hand with all three parameters, as Google's URL builder page advises.

What SendPulse counts as its own result

For a campaign the result is engagement: opens, click-throughs and a Clicks map. The statistics article shows no orders.

For a flow the result is Conversions amount, and the Goal element article gives two ways to produce it. Place a Goal element after any element, for instance on the Yes branch of a Click on link condition, and everyone who reaches it is converted. Or open the flow's start element, turn on stopping by event, choose an event such as Purchase, and activate Count the stop as a conversion. A custom event is a POST request your own system sends (Create events).

Read what the second method never asks. It does not ask whether the contact opened a reminder. It sets no span of days between message and purchase. It stores a count, with no order value. If the first reminder waits an hour, a shopper who abandons a cart at noon and checks out at five past still counts, for a flow that had sent nothing. That is no flaw. It is the definition, and it moves when you move it: put the Goal behind a click condition and the count becomes people who clicked.

Worked example: 96 conversions, 41 email orders

For example, with invented figures that describe no real shop. In one month the order system books 1,150 orders. The cart flow counts 96 conversions by stop event. GA4's paths report, charted on last click per Google's report help, gives Email 41. Google Ads claims 520 and Meta 610 under their own rules.

  • All claims: 96 + 520 + 610 = 1,226.
  • Per booked order: 1,226 ÷ 1,150 = 1.07.
  • Flow against GA4: 96 - 41 = 55 purchases the flow counted and GA4 handed to some other channel's click.

Three systems, three rules, and none asks what would have sold without the reminder. Causality Engine's read lays a different pair beside them: what each channel caused and what last click gives it, both worked from one export. Direct is reassigned to the channels its buyers came from, and every channel carries a health score out of 100 plus a next step (how it works). If Email's caused share sits well under what the flow implies, or well over GA4's 41, change nothing on that alone. Hold part of the audience out and count.

The check with no extra bill: Split contacts

SendPulse documents a random split inside flows. The Split contacts action lives in the Action element under Other, has a Proportion slider, and sends each arriving contact down one of two branches at random. It needs a paid plan. Put the reminders on one branch and no message on the other. On each branch, a Change variable action can write cart_test as mailed or held, so both groups match up with the order export later.

For example, with 80% / 20% over a month, 320 mailed contacts place 80 orders and 80 held contacts place 16: 80 ÷ 320 = 25 per 100 against 16 ÷ 80 = 20 per 100. The reminders added 5 orders per 100 mailed, 5 × 3.2 = 16 orders, where the stop-event counter read 96.

On the free plan the split is by hand: upload a variable that marks a random tenth, then send campaigns to a segment where that variable is not equal to the marker. That article warns segmentation only uses data from the last 3 months, so refresh the marker.

The split answers for one flow. For email as a whole next to paid media, put the paths export on the start page: a preview computed in your browser lists the channels behind the buyers GA4 calls Direct. If next quarter's plan hangs on the answer, Causality Engine, which I founded, sells the full read once for €99, VAT excluded, with 30 days to ask for the money back (pricing, checked on 11 November 2026).

What neither side covers

The read needs a GA4 purchase key event and 12 months or more of paths. Its one-off read page says not to buy on thin or broken analytics, and that a channel under 1% of credit on both methods is called too small to act on. It sees email as one channel. Which flow, which message and which contact stay SendPulse's ground, along with chatbot conversations that never reach the website.

SendPulse's plan table allows 1 event on the free email plan and 10 on Standard. A cart flow that starts on one event and stops on another needs two, so the purchase counter begins where the paid plan begins, and what it shows there is every purchase by anyone inside the flow. A counter with no comparison group beside it is an easy feature to renew.

See also

FAQ

Does SendPulse have an attribution window for purchases?

Its Goal element article states none. A conversion is counted when a contact reaches a Goal element or when the chosen stop event arrives, whenever that is.

Is there a connection between SendPulse and Causality Engine?

None exists. Causality Engine's integrations page says it reads the channels a GA4 export records, with no connector to wait for. SendPulse appears in that export as sendpulse/email sessions once the tags are on.

Can I see revenue per SendPulse campaign?

Not in the campaign statistics the knowledge base describes. In GA4, set Session campaign as the dimension and find the utm_campaign name you typed in the wizard, as the statistics article shows.

TAGS
Causality EngineSendPulseEmail AttributionGA4Worked Example

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Agentic marketing, built for your team

The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.

With Joris van Huët, interim and fractional CMO in Utrecht. From EUR 5,000 a month, monthly cycles, a 30-day exit.