POST
/
track
/
sale
Go
package main

import(
	"context"
	dubgo "github.com/dubinc/dub-go"
	"github.com/dubinc/dub-go/models/operations"
	"log"
)

func main() {
    ctx := context.Background()

    s := dubgo.New(
        dubgo.WithSecurity("DUB_API_KEY"),
    )

    res, err := s.Track.Sale(ctx, &operations.TrackSaleRequestBody{
        CustomerExternalID: "<id>",
        Amount: 594903,
        EventName: dubgo.String("Invoice paid"),
        LeadEventName: dubgo.String("Cloned template 1481267"),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res != nil {
        // handle response
    }
}
{
  "eventName": "<string>",
  "customer": {
    "id": "<string>",
    "name": "<string>",
    "email": "<string>",
    "avatar": "<string>",
    "externalId": "<string>"
  },
  "sale": {
    "amount": 123,
    "currency": "<string>",
    "paymentProcessor": "<string>",
    "invoiceId": "<string>",
    "metadata": {}
  }
}
Conversions endpoints require a Business plan subscription or higher.

Authorizations

Authorization
string
header
required

Default authentication mechanism

Body

application/json
customerExternalId
string
required

The unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer.

Required string length: 1 - 100
amount
integer
required

The amount of the sale in cents (for all two-decimal currencies). If the sale is in a zero-decimal currency, pass the full integer value (e.g. 1437 JPY). Learn more: https://d.to/currency

Required range: x >= 0
currency
string
default:usd

The currency of the sale. Accepts ISO 4217 currency codes. Sales will be automatically converted and stored as USD at the latest exchange rates. Learn more: https://d.to/currency

eventName
string
default:Purchase

The name of the sale event. Recommended format: Invoice paid or Subscription created.

Maximum length: 255
Example:

"Invoice paid"

paymentProcessor
enum<string>
default:custom

The payment processor via which the sale was made.

Available options:
stripe,
shopify,
polar,
paddle,
revenuecat,
custom
invoiceId
string | null

The invoice ID of the sale. Can be used as a idempotency key – only one sale event can be recorded for a given invoice ID.

metadata
object | null

Additional metadata to be stored with the sale event. Max 10,000 characters when stringified.

leadEventName
string | null

The name of the lead event that occurred before the sale (case-sensitive). This is used to associate the sale event with a particular lead event (instead of the latest lead event for a link-customer combination, which is the default behavior). For direct sale tracking, this field can also be used to specify the lead event name.

Example:

"Cloned template 1481267"

clickId
string | null

[For direct sale tracking]: The unique ID of the click that the sale conversion event is attributed to. You can read this value from dub_id cookie.

customerName
string | null

[For direct sale tracking]: The name of the customer. If not passed, a random name will be generated (e.g. “Big Red Caribou”).

Maximum length: 100
customerEmail
string<email> | null

[For direct sale tracking]: The email address of the customer.

Maximum length: 100
customerAvatar
string | null

[For direct sale tracking]: The avatar URL of the customer.

Response

A sale was tracked.

eventName
string
required
customer
object | null
required
sale
object | null
required