Launch offer — early users get 1 month of Premium, free. Get started →

Conversion tracking

Auto-capture sales from your payment webhooks — no code on the success page

Signed webhook auto-capture connects your payment gateway to directinapp so a paid order records a conversion on its own, with no code on your success page. You paste a webhook URL and your signing secret in Settings, add the link's slug as dia_slug in the order metadata, and that is the whole setup. Every delivery is HMAC-verified, idempotent and tenant-safe, and it works with Razorpay, Stripe, Shopify and WooCommerce.

How do I record conversions from a payment webhook?

Paste directinapp's webhook URL and your signing secret in Settings, then add a dia_slug to each order's notes or metadata. When Razorpay, Stripe, Shopify or WooCommerce fires a paid-order webhook, directinapp verifies the HMAC signature and records one conversion against that link, with no code on your success page.

Why it matters

01

No code on the success page

Most conversion tracking makes you edit your thank-you page or wire up a script. Webhook auto-capture skips that entirely: once the webhook is connected, a paid order at Razorpay, Stripe, Shopify or WooCommerce records a conversion on its own. There is nothing to add to your checkout, and nothing that breaks when you redesign the page.

02

Signed, idempotent and tenant-safe

Every webhook is verified with HMAC using the signing secret you paste, so directinapp only accepts calls that genuinely came from your gateway. Retries and duplicate deliveries are handled idempotently, so a single paid order counts once, not three times. Each merchant's events stay isolated, so one account's webhook can never write to another account's links.

03

Rupees per link, attributed to the click

The dia_slug in your order metadata tells directinapp which link earned the order, and an optional dia_clid ties it to the exact click. The Conversions tab then shows count, total value and conversion rate per link, per currency (INR, USD, EUR, GBP, AED), never blindly summed across currencies. That visitor id (dia_vid) is cookie-scoped to one browser, so it identifies a browser and not the same shopper across their devices.

Set it up

Three steps, no developer

01

Paste the webhook URL and signing secret in Settings

In directinapp Settings, copy your webhook URL and paste it into Razorpay, Stripe, Shopify or WooCommerce as a new webhook. Copy that provider's signing secret back into directinapp so every delivery can be HMAC-verified. This is a one-time setup per store, and we never see or store your API keys or checkout.

02

Add dia_slug to your order metadata

When you create the order or checkout, drop the link's slug into the order's notes or metadata as dia_slug: Razorpay notes, Stripe metadata, Shopify note_attributes, WooCommerce meta_data. Add dia_clid too if you want per-click attribution. That single field is what tells directinapp which link the paid order belongs to.

03

Let paid orders record themselves

Once connected, directinapp listens for the paid-order event: payment.captured on Razorpay, checkout.session.completed on Stripe, orders/paid on Shopify, order.updated (completed or processing) on WooCommerce. Each verified, deduplicated webhook records one conversion in ₹ against the link. Open the Conversions tab on the Business tier to watch them land; the free early-bird trial month is full Business.

How Webhook auto-capture records a sale

Provider webhook

a sale happens

directinapp

records it

On the roadmap — Signed webhook auto-capture is HMAC-verified, idempotent and tenant-safe today for Razorpay, Stripe, Shopify and WooCommerce. Still on the roadmap: HMAC-signed plain postbacks (POST /conversions is currently unsigned), a native one-click store or gateway app (ours stays webhook-based and never touches your keys or checkout), and recognising the same person across their devices (the dia_vid visitor id is cookie-scoped to one browser).

Frequently asked questions

How does payment webhook auto-capture work?+

You paste directinapp's webhook URL and your gateway's signing secret in Settings, and add the link's slug as dia_slug in the order's notes or metadata. When the gateway fires its paid-order webhook, directinapp verifies the HMAC signature, deduplicates retries, and records one conversion in rupees against that link, with no code on your success page.

Which payment providers and events are supported?+

Razorpay (payment.captured), Stripe (checkout.session.completed), Shopify (orders/paid, read from note_attributes) and WooCommerce (order.updated when completed or processing, read from meta_data). Each reads the dia_slug, and an optional dia_clid, from the order's notes or metadata, so the conversion lands on the right link with its click attribution intact.

Is this a native one-click Shopify or Razorpay app?+

No. This is webhook-based capture, not a native store or gateway integration, so it never touches your API keys, your checkout, or your customer's card details. You keep the payment stack you already run and just point a signed webhook at directinapp. A one-click native store app is still on the roadmap.

Are the webhooks secure, or can someone fake a conversion?+

Each webhook is HMAC-verified with the signing secret you paste, so directinapp rejects any call that isn't genuinely signed by your gateway. Deliveries are idempotent, so a retried or duplicated webhook counts the order once. And it is tenant-safe: a webhook for your account can only write to your links, never another merchant's.

Do I still need the pixel or postback if I use webhooks?+

No, not for paid orders, since the webhook captures those automatically. You might still use the pixel (GET /c?s=SLUG&e=purchase&v=499&cur=INR) or the postback (POST /conversions) for non-payment events like a lead or signup, or on a store the webhook doesn't cover. Note that the plain postback is currently unsigned; the webhook path is the HMAC-verified one.

What does it cost, and can I see which visitor converted?+

Ingestion is free and always on; viewing the Conversions tab needs the Business tier (Rs 999/mo or Rs 9,999/yr plus GST), and the free early-bird trial month is full Business. Each captured order ties to the link via dia_slug and to the click via dia_clid; a cookie-scoped dia_vid names the browser, but recognising the same person across their devices is still on the roadmap.

More on conversion tracking

directinapp Business

The full conversion-tracking product — pricing, setup and a live demo.

Conversion tracking

Conversion tracking is measuring the real outcomes a link drives — a sale, a signup, a lead — not just the clicks. You tell your analytics tool "this counts as a conversion, worth this much," and it ties that outcome back to the link that earned it. directinapp does this on every link: fire a pixel, a postback or our drop-in dia.js script when a sale happens, and see the count, the rupee value and the conversion rate for that exact link — right down to which click and visitor drove it.

Instagram sales tracking

Yes — you can track sales and signups from an Instagram bio link or reel. Put your store or checkout behind a directinapp link, fire our pixel on your payment success page, and the Business report shows the count, rupee value and conversion rate that link drove. Even though a bio or reel is one shared link, per-visitor and per-click attribution shows which visitor and which click drove each sale — the visitor id is cookie-scoped to this browser, not the same person across devices.

vs Linktree

Linktree tells you a link got clicked. directinapp tells you it drove 12 purchases worth Rs 5,988. On any link you can fire our tracking pixel or server postback with a sale value, and the Business tier shows conversion count, total value and conversion rate per link, per currency (INR/USD/EUR/GBP/AED). Attribution now runs per-click and per-visitor (dia_clid and dia_vid), and signed webhook auto-capture for Razorpay, Stripe, Shopify and WooCommerce records a paid order automatically.

Tracking pixel

A tracking pixel for links is a tiny 1×1 image you load when a sale happens. Point an img tag at GET /c?s=SLUG&e=purchase&v=499&cur=INR and directinapp records one conversion — with its rupee value — against the link that drove it. No SDK, no cookie, no code beyond one line of HTML.

Server postbacks

A server postback records a conversion by sending a POST /conversions call from your backend to directinapp. You send JSON with the link's slug, an event name, value and currency, and the dashboard shows counts, total value and conversion rate per link. It is shipped and works today. Signed, HMAC-verified postbacks are on the roadmap.

Lead tracking

Yes — you can track leads and signups from any directinapp link today. Fire a "lead" or "signup" event from your form's thank-you page with our pixel or postback, and each link shows its lead count, conversion rate, and a per-event breakdown. Attribution ties each lead to the click and the visitor — a cookie-scoped id for this browser — that drove it; recognising the same person across devices is still on the roadmap.

Stop losing clicks at the browser

Create your first smart link in under a minute and see where every tap really goes.

Start free

No credit card required · 7-day free trial