Measure

Bring your data together

One stream per customer from your site, your server and your other tools. What is automatic today, how to send data from any tool, and what comes later.

Your customers leave a trail in many tools: your site, your store, your email and text tools, your CRM, your phone. Sporetag puts it in one place. Each customer profile has one stream, in time order, with every item labeled by where it came from.

Customer profiles are on paid plans: Solo, Studio, Agency and Custom, with the site in Attribution mode.

What is automatic today

FromWhat shows up
Your site (the Sporetag script)Visits with their source, short link clicks, email and text clicks, custom events, purchases
Your server (Events API)Server events and purchases, with value
StripePayments, refunds, and subscriptions started, renewed and canceled
ShopifyOrders, refunds and new customers, with the UTMs Shopify kept
Meta Conversions APIEach send to Meta and its status

Stripe and Shopify connect from the site's Integrations tab. They import the last 90 days, then keep up on their own. A sale that also came in from your site or the Events API is counted once.

Send data from any tool

Any tool that can call a webhook can add to the stream today. Send it to the Events API with two extra fields:

  • kind: what happened. One of email_sent, email_opened, email_clicked, sms_sent, sms_clicked, form, call, note, order, refund, subscription_started, subscription_renewed or subscription_canceled.
  • source: the tool, in lowercase, such as klaviyo, mailchimp, attentive, postscript, hubspot or my_crm.

Say who it is with email, phone, visitor.id or external_ids. Put short details in payload.

JSON
{
  "name": "October letter",
  "kind": "email_opened",
  "source": "klaviyo",
  "event_id": "klaviyo-open-81723",
  "email": "ann@example.com",
  "payload": { "campaign": "october-letter" }
}
  • order counts like any purchase: it reaches goals, the attribution report and Meta.
  • Every other kind is added to the customer's stream only. It does not count toward your plan's events or your goals.
  • refund with a value lowers the customer's revenue.
  • event_id keeps a retried webhook from being added twice.
  • payload takes up to 12 short text or number values. Anything that looks like an email or phone number is dropped.

External ids

external_ids ties ids from other tools to the customer, so the next item can use them alone:

JSON
"external_ids": { "stripe_customer": "cus_Q8x2", "hubspot_contact": "5012" }

Names are lowercase with underscores. Up to 10 per event.

Zapier

  1. Make a Zap with the trigger from your tool, such as "New Open" in your email tool.
  2. Add the action Webhooks by Zapier, then POST.
  3. URL: https://sporetag.com/api/v1/events. Payload type: json.
  4. Data: name, kind, source, email and event_id, mapped from the trigger.
  5. Headers: Authorization with Bearer and your site's secret key.

Make

  1. Add the HTTP module, Make a request.
  2. URL https://sporetag.com/api/v1/events, method POST.
  3. Header Authorization: Bearer st_sk_.... Body type Raw, content type JSON.
  4. Write the JSON body as in the example above, with values from the earlier modules.

Keep the secret key in the tool's own settings. Never put it in a page.

Native connectors

Live now: Stripe and Shopify.

These connect without a webhook (when shipped): Klaviyo, Mailchimp, Attentive and Postscript, then ad spend from Meta and Google Ads, then CRMs such as HubSpot and GoHighLevel, call tracking and form tools. Until then, the Events API above covers any of them that can send a webhook.

Something missing or wrong? Email hello@sporetag.com.