Zum Hauptinhalt springen
7 Min. Lesedauer

Revenue Attribution

Pro Feature

Connect visitor behavior to actual revenue. See which pages, campaigns, and traffic sources drive sales by integrating with your payment provider.

Revenue Attribution is available on Pro, Scale, and Enterprise plans. Upgrade your plan to enable this feature.


Overview

Revenue attribution closes the loop between marketing and sales. Instead of guessing which activities drive revenue, see the actual numbers:

  • Revenue by source: Which channels drive the most revenue
  • Revenue by page: Which content leads to purchases
  • Revenue by campaign: Which campaigns have positive ROI
  • Customer journey: What path leads to conversion

Supported Integrations

Stripe

Native integration with Stripe for automatic revenue tracking.

Setup:

  1. Go to SettingsIntegrationsStripe
  2. Click Connect Stripe Account
  3. Authorize the connection
  4. Revenue data syncs automatically

Data captured:

  • Transaction amounts
  • Customer emails (for journey matching)
  • Subscription events (new, renewal, churn)
  • Payment status (succeeded, failed, refunded)

Lemon Squeezy

Native integration with Lemon Squeezy for indie and SaaS businesses.

Setup:

  1. Go to Settings -> Integrations -> Lemon Squeezy
  2. Enter your Lemon Squeezy API key
  3. Configure webhook signing secret
  4. Revenue data syncs automatically

Polar

Native integration with Polar for open-source and creator monetization.

Setup:

  1. Go to Settings -> Integrations -> Polar
  2. Enter your Polar API key
  3. Configure webhook signing secret
  4. Revenue data syncs automatically

PayPal

Native integration with PayPal Checkout for one-time payments. Sandbox + Live modes both supported.

Setup:

  1. Create a REST API app in PayPal Developer
  2. Create a webhook in PayPal pointing at https://api.zenovay.com/webhooks/paypal/YOUR_WEBSITE_ID
  3. Subscribe to PAYMENT.CAPTURE.COMPLETED and PAYMENT.CAPTURE.REFUNDED
  4. In Zenovay, go to SettingsRevenue AttributionPayPal and paste:
    • Client ID, Client Secret (from your PayPal app)
    • Webhook ID (from the webhook you just created)
    • Pick Sandbox or Live to match your PayPal app
  5. Save — Zenovay validates the credentials by fetching an OAuth2 access token

For best attribution accuracy, set purchase_units[0].custom_id = visitor_id when creating the PayPal order on your server. See the PayPal integration guide for full instructions.

Subscription support is not yet available — only one-time captures are tracked in V1.

Paddle

Native integration with Paddle Billing (v2) for SaaS companies that use Paddle as merchant of record (handles EU VAT and global sales tax). Sandbox and Live modes both supported.

You only need ONE thing: a Paddle API key with Write permission. Zenovay creates the webhook destination on your behalf via Paddle's API, captures the signing secret automatically, and stores both encrypted. You never touch Paddle's Notifications dashboard.

Setup (2 minutes):

  1. In Paddle → Developer tools → AuthenticationNew API key → permission Write → copy the key (starts with pdl_live_apikey_ or pdl_sdbx_apikey_).
  2. In Zenovay → Settings → Revenue Attribution → click the Paddle card → paste the key. Sandbox vs Live is auto-detected from the prefix.
  3. Click Connect. Done.

What happens under the hood:

  • Zenovay validates the key against /event-types.
  • Calls POST /notification-settings on your behalf — URL https://api.zenovay.com/api/webhooks/paddle/<your-website-id>, subscribed to transaction.completed + 3 subscription events.
  • Captures endpoint_secret_key from Paddle's response and stores it encrypted.

Why you never see a "signing secret" field on the happy path: Paddle deliberately hides the signing secret in its dashboard after creation (no "reveal" button, only "Rotate Secret"). Zenovay uses Paddle's API to fetch the secret directly — the only documented programmatic path. See the help center article for the full explanation.

Data captured:

  • Transaction amounts (currencies including zero-decimal JPY/KRW handled correctly per ISO 4217)
  • Customer emails when present on the event (for visitor → revenue matching)
  • Subscription lifecycle: created, updated, canceled (maps to Zenovay's subscription_status)
  • Payment status

Refund events (adjustment.*) and paused / past-due subscription branches are not yet rendered in V1 — Zenovay silently ignores them.

See the Paddle integration guide for troubleshooting and the (rarely needed) manual-setup fallback.

Custom Webhooks

For any other payment provider, use webhooks:

Webhook Endpoint:

POST https://api.zenovay.com/webhooks/revenue

Payload:

{
  "api_key": "YOUR_API_KEY",
  "website_id": "YOUR_WEBSITE_ID",
  "event": "purchase",
  "data": {
    "transaction_id": "txn_123",
    "amount": 99.00,
    "currency": "USD",
    "customer_email": "[email protected]",
    "product_name": "Pro Plan",
    "metadata": {
      "plan": "annual",
      "coupon": "LAUNCH20"
    }
  }
}

Revenue Dashboard

Overview Metrics

MetricDescription
Total RevenueSum of all tracked transactions
TransactionsNumber of successful purchases
Average Order ValueRevenue / Transactions
Conversion RateVisitors who purchased

Revenue by Source

See which traffic sources generate the most revenue:

  • Direct traffic
  • Organic search
  • Paid search
  • Social media
  • Referrals
  • Email campaigns
  • UTM-tagged campaigns

Revenue by Page

Identify high-converting content:

  • Landing pages that lead to purchases
  • Blog posts that influence buying decisions
  • Pricing page performance
  • Feature pages that convert

Attribution Models

Last Touch (Default)

Credits 100% of revenue to the last page/source before conversion.

Best for: Understanding final conversion triggers

First Touch

Credits 100% of revenue to the first page/source in the customer journey.

Best for: Understanding acquisition channels

Linear

Credits revenue equally across all touchpoints in the journey.

Best for: Understanding full journey contribution

Time Decay

Credits more revenue to touchpoints closer to conversion.

Best for: Balanced view with conversion focus


Customer Journey Tracking

Connect anonymous visitor sessions to paying customers:

How It Works

  1. Anonymous tracking: Visitor browses your site
  2. Identity reveal: Visitor submits email (signup, checkout, form)
  3. Purchase event: Payment received via webhook
  4. Journey connection: All prior sessions linked to customer

Journey View

For each customer, see:

  • First visit date and source
  • All pages viewed across sessions
  • Time from first visit to purchase
  • Total sessions before conversion
  • Content that influenced the purchase

Setting Up Revenue Tracking

Step 1: Connect Payment Provider

See Supported Integrations above.

Step 2: Enable Identity Tracking

Ensure visitor identification is set up:

// When user provides email (form, signup, checkout)
window.zenovay('identify', 'user_123', {
  email: '[email protected]'
});

Step 3: Verify Data Flow

  1. Make a test purchase
  2. Check Revenue dashboard
  3. Verify transaction appears with correct amount
  4. Confirm customer journey is linked

Revenue Alerts

Get notified about revenue events:

Daily Revenue Summary

{
  "alert": "daily_revenue_summary",
  "schedule": "0 9 * * *",
  "channel": "email",
  "recipients": ["[email protected]"]
}

Revenue Milestones

{
  "alert": "revenue_milestone",
  "threshold": 10000,
  "period": "month",
  "channel": "slack"
}

Failed Payments

{
  "alert": "payment_failed",
  "notify_immediately": true,
  "channel": "email"
}

API Access

Access revenue data programmatically:

Revenue Summary

GET /api/websites/:websiteId/revenue/summary
  ?start_date=2025-01-01
  &end_date=2025-12-31
Authorization: Bearer YOUR_API_KEY

Revenue by Source

GET /api/websites/:websiteId/revenue/by-source
  ?period=last_30_days
Authorization: Bearer YOUR_API_KEY

Customer Journeys

GET /api/websites/:websiteId/revenue/journeys
  ?limit=100
Authorization: Bearer YOUR_API_KEY

Privacy & Security

Data Handling

  • Transaction data encrypted at rest
  • Customer emails hashed for matching
  • No credit card numbers stored
  • PCI compliance not required (we never see card data)

Access Control

  • Revenue data visible to Admin and Owner roles
  • Viewer role sees aggregated data only
  • API access requires appropriate scopes

Best Practices

  1. Connect payment provider first: Revenue data is foundational
  2. Implement identity tracking: Links anonymous to paying customers
  3. Tag campaigns consistently: Use UTM parameters for attribution
  4. Review attribution model: Choose model that fits your sales cycle
  5. Set up alerts: Know when revenue milestones are hit

Next Steps

War diese Seite hilfreich?