Skip to content

Klaviyo Integration

Alva integrates with Klaviyo through webhooks in flows. When a flow fires, a webhook action sends a request to Alva, which processes the delivery and fires an event back to Klaviyo to trigger your email.

Klaviyo Flow → Webhook Action → Alva → "Download Ready" Event → Klaviyo Email
  1. A trigger event happens (e.g., an order is placed).
  2. Your Klaviyo flow reaches the webhook action.
  3. The webhook sends the customer’s data to Alva.
  4. Alva creates a secure download link and fires an Alva Download Ready event back to Klaviyo.
  5. A second flow (triggered by the Alva event) sends the email with the download link.

In Alva, go to Settings > Webhook Configuration (or open a specific bundle). You’ll see:

  • Webhook URL — e.g., https://klaviyo.alvaapps.com/webhook/your-endpoint-slug
  • Webhook Secret — click “Reveal” to see it, then copy it.
  1. In Klaviyo, go to Flows.
  2. Open the flow you want to add file delivery to (e.g., a post-purchase flow), or create a new one.
  3. In the flow builder, add a Webhook action at the point where you want to trigger delivery.
  1. Set the URL to your webhook endpoint URL from Alva.
  2. Under Headers, add a custom header:
    • Key: x-alva-webhook-secret
    • Value: your webhook secret from Alva
  3. Leave the method as POST and content type as JSON.
  4. Save the webhook action.

You need a separate flow to send the download email:

  1. Create a new flow triggered by the Alva Download Ready metric.
  2. Add an Email action.
  3. In the email template, use the event variables to include the download link:
VariableDescription
{{ event.DownloadPageURL }}The customer’s unique download page link
{{ event.ProductName }}Name of the download bundle
{{ event.FileCount }}Number of files in the bundle
{{ event.ExpiresAt }}When the download link expires
{{ event.MaxDownloads }}Maximum number of downloads allowed

Example email snippet:

Your files are ready! Click the link below to download:
{{ event.DownloadPageURL }}
You have {{ event.MaxDownloads }} downloads available.
This link expires on {{ event.ExpiresAt }}.
  1. In Alva, go to Settings > Webhook Configuration and click Send Test.
  2. Enter a test email address.
  3. Check that:
    • A delivery appears in your Deliveries page.
    • The download page URL works.
    • The email arrives (if your email flow is active).

Each download bundle has its own unique webhook endpoint. This means you can:

  • Deliver different files from different flows.
  • Use one flow for “Photography Presets” and another for “E-book”.
  • Each webhook URL routes to the correct bundle automatically.

When Klaviyo sends the webhook, it includes the customer profile data from the flow. Alva uses this to:

  • Identify the customer (email, name).
  • Create or update the customer record.
  • Associate the delivery with the correct profile in Klaviyo.

No additional configuration is needed — Klaviyo sends the profile data automatically as part of the webhook payload.

SymptomCauseFix
No delivery createdWrong webhook URLCheck the URL matches what’s shown in Alva
401 errorMissing or wrong secretVerify the x-alva-webhook-secret header value
Duplicate deliveriesFlow triggers multiple timesAlva handles this — duplicates are automatically detected and ignored
Delivery stuck as “Pending”Fraud check flagged itCheck the delivery details for the fraud score and reason
No email receivedMissing email flowCreate a flow triggered by “Alva Download Ready”

See the FAQ for more troubleshooting tips.