SendSetsDocs

Acquisition

Trace confirmed campaign sends to signups, activations, paid customers, and revenue.

Acquisition answers the question reply rates cannot: which campaigns, steps, copy, mailboxes, and audiences turn into customers. It joins what your campaigns sent with what people did in your product afterwards.

It is available on every plan. Open it from Acquisition in the top navigation; it needs the View analytics permission, and the Prospects and Identities tabs also need View contacts.

Send product events

Your app reports what people do with product events. Send them from your server with an API key that has WRITE_EVENTS:

curl -X POST https://api.sendsetsapi.com/v1/events \
  -H "Authorization: Bearer $SENDSETS_KEY" \
  -H "Idempotency-Key: signup-usr_812" \
  -H "Content-Type: application/json" \
  -d '{"name":"account.created","identity":{"user_id":"usr_812","email":"jane@acme.com"},"data":{"plan":"pro"}}'

Use the identity object rather than email when the person might not be a contact yet. An identity event is always stored: it joins the contact with that email if there is one, and otherwise waits as a person without a contact until one appears or your app links them. No contact is ever created from an event.

POST /events/test takes the same body and stores nothing. It shows how the event would resolve and which goals it would match, which makes it the quickest way to check instrumentation. The Events tab lists every event name the workspace has received, its properties, and its daily or weekly volume.

Define goals

A goal turns one event into a funnel stage: Signup, Activation, Paid, Revenue, or Retention, or a Custom outcome that never appears in headline numbers. Create them on the Goals tab. A goal can:

  • require properties of the event, such as plan is one of pro, team
  • read a value, such as amount in cents with currency, for revenue

Each stage has one primary goal, and headline numbers read only primary goals, so two goals that match the same signups never count them twice. The editor previews the rule against the last 30 days before you save.

Goals apply to events received after you save them. Editing a goal's rule creates a new revision for events from then on, so last month's report does not shift under you. To apply a goal to the past, open its menu and choose Replay past events: the preview shows how many conversions would be added and removed, and nothing changes until you start it. Raw events are kept for the engagement-event retention window, so a replay can reach back that far; conversions themselves are kept after their events are pruned.

Read the overview

The Overview tab follows every confirmed send in the range for an observation window, 30 days by default. For each stage it counts the prospects who reached it within the window after a send:

  • Positive reply from reply classification on the campaign
  • Signed up, Activated, and Paid from each stage's primary goal

Rates are shown per 10,000 confirmed sends and use only sends whose window has closed. A campaign that sent yesterday is counted, but it does not drag its rate down before people have had time to convert. Only sends a worker confirmed count; a failed or unconfirmed send never does.

In this period is a different question: how many people signed up, activated, or paid for the first time inside the range, and how much revenue arrived, whenever they were emailed. Revenue is shown per currency and never added across currencies.

These are cohort numbers, not attribution. Someone emailed by two campaigns who then signs up counts in both campaigns' rows.

Attribute customer acquisition

The Attribution tab credits the last confirmed campaign send at or before a customer's first primary signup conversion, within the workspace's attribution window (30 days by default). If no signup goal is primary, the first primary paid conversion is used instead. Attribution uses the event's occurrence time, including events received late. Failed and unconfirmed sends never receive credit.

The acquisition is saved with the send's variant, copy dimensions, mailbox, and original audience. Later campaigns and elapsed time do not move it. Future revenue conversions inherit the original acquisition, so Lifetime attributed revenue includes revenue outside the selected acquisition date range. Currency totals remain separate. Earlier acquisition events received late can correct the original acquisition moment; human corrections are preserved.

Identity matching and engagement are different evidence. An exact contact ID, email match, linked identity, or verified website visitor can connect the converting person to the emailed contact. A reply, open, or click is not required for credit. Historical matches and variant dimensions stay unknown when evidence is no longer available.

Company estimates are enabled by default and shown separately. They credit an emailed colleague in a shared customer account, or on a matching corporate domain, within the window. Consumer and shared email domains do not support domain estimates. Estimated customers and revenue are never added to exact attribution totals.

Use Attribution settings to set the window from 1 to 365 days or turn company estimates off. Changes keep already credited acquisitions and re-evaluate automatic unattributed customers. Settings changes need Manage settings.

Click an acquired customer to see the credited send, identity match, observed engagement, lifetime revenue, per-conversion touches, and correction history. Customer details need View contacts as well as View analytics. The same explanation appears in a contact's Journey tab. Conversion touches explain the send preceding an individual conversion without changing the original acquisition.

Members with Manage settings can choose Correct attribution, credit another confirmed send to the same person at or before acquisition, or mark the person as not acquired by outbound. A reason is required and saved in the audit history. Corrections can credit a send outside the automatic window. Future revenue follows the corrected acquisition. Restore automatic recomputes from current evidence. New evidence and corrections update reports live; queued attribution is marked as pending.

Compare what works

Pick what to break the overview down by: campaign, step, variant, mailbox, offer, angle, call to action, or the audience a contact came from (source, segment, category). Click a campaign row to compare its variants. Sends from before variants were recorded show as unknown rather than guessed.

Cost per signup appears only for campaigns where you entered spend. Use the coin button on a campaign row to set the total spent on it; cost per signup divides that by the campaign's signups within the window after any of its sends.

Find prospects by stage

The Prospects tab lists everyone enrolled in a campaign with how far they got. Filter to interested, signed up, activated, or paid prospects, to silent conversions (people who converted without ever replying), or to a drop-off such as interested but not signed up. Clicking a prospect opens their contact on the Journey tab: enrollments, confirmed sends with variant and mailbox, replies, Reply Agent drafts, product events, and conversions, each conversion with the last confirmed send before it.

Funnels

The funnel at the bottom of the Events tab counts unique people through ordered steps: confirmed sends, positive replies, product events, and goal conversions. Each step must follow the previous one within the window, and the largest drop-off is highlighted.

Identities

People are matched by email to contacts, and otherwise by the user ids and anonymous ids your app sends. When one identifier points at two different people, SendSets does not guess: the event goes to the stronger match and the pair appears under Identities for review. Merge folds one person into the other with their events and conversions; Keep separate closes the conflict. Two people linked to different contacts cannot be merged.

Linking identities from your app with POST /identities/link right after signup or login merges pre-signup history into the account automatically, as long as it does not join two contacts or two user ids. Customer accounts group people without ever merging them.

Deleting a contact erases their person, events, and conversions. People without a contact can be deleted from the Identities tab.

Agents

Everything here is available to agents through the tool registry, over MCP and A2A: event schema and dry runs, goals, prospects, timelines, breakdowns, trends, and funnels.

Moving a workspace

Goals, people, accounts, conversions, attribution settings, saved acquisitions, credits, conversion touches, and correction history travel in the Acquisition group of a workspace export. Campaign spend travels with campaigns. Attribution work queues are instance-local and rebuilt after import.

On this page