Connect Klaviyo
Send draft order invoice, reminder, payment and quote request events to Klaviyo so you can trigger flows from them and keep invoiced customers out of abandoned checkout emails.
Klaviyo's Shopify integration syncs orders, checkouts and browsing, but it knows nothing about draft orders. An invoice you send never shows up as an event, a paid invoice only appears once it becomes an order, and customers who received an invoice can even land in your Abandoned Checkout flow. Connecting Klaviyo to B2B Draft Order Invoices GOAT fills that gap: every invoice, reminder, payment and quote request becomes an event in Klaviyo that you can build flows and filters around.
How to connect
- In the app, open Integrations in the left sidebar.
- Click Connect Klaviyo. You'll be sent to Klaviyo to approve access (you need an owner, admin or manager role there). Klaviyo may show an "App has not been reviewed" notice first - click Continue.
- Pick the Klaviyo account to connect if you manage more than one, then click Allow.
- You land back on the Integrations page with a green Connected badge and your Klaviyo account name.
There are no API keys to copy. The app asks Klaviyo for the minimum access it needs: read your account name, and create events and profiles.
Only activity from after you connect is sent. Existing draft orders aren't backfilled, so connecting never fires flows for old invoices.
As soon as you connect, the app sends a sample Invoice Sent event so the metric exists in Klaviyo right away. Use the Send a test event box on the Integrations page to send another sample to any email address while you build your flows.
Events sent to Klaviyo
These appear in Klaviyo's flow trigger dropdown as metrics. Every event carries the customer's email, so a profile is created or updated in Klaviyo when the event lands.
| Metric | Fires when | Example use |
|---|---|---|
| Invoice Sent | An invoice email goes out for a draft order - from the Shopify admin, from the app, or as an automatic reminder | Send your own branded "your invoice is ready" email, or filter invoiced customers out of Abandoned Checkout |
| Invoice Reminder Sent | The app sends an automatic payment reminder | Add an SMS nudge alongside the email reminder |
| Invoice Paid | A draft order is completed and becomes an order | Thank-you flow, or end an open-invoice nurture early |
| Invoice Viewed | The customer opens an invoice from their account page or the theme widget | Follow up with viewers who haven't paid |
| Draft Order Created | A new draft order is created in Shopify, whether or not it has been invoiced yet | Alert an account manager, or start a "we're preparing your quote" series |
| Quote Requested | A customer submits the quote request form | Confirm receipt and set expectations on turnaround |
| Quote Converted | You convert a quote request into a draft order | Let the customer know their quote is ready to pay |
| Quote Rejected | You mark a quote request as rejected | Send a polite decline |
Event properties
Each draft order event includes the details you need to personalise messages and split flows:
draft_order_id,draft_order_numberanddraft_name(for example#D123)invoice_url- the customer's secure Shopify payment link, ready to drop into an email as{{ event.invoice_url }}status,note,tagsand anydiscount_codesitems- the line items with title, variant, SKU, quantity and price- the order value as the event's value, plus
currency
Invoice Sent events add is_first_invoice - true on the first send for a draft order, false on re-sends and reminders. Reminder events add reminder_number and scheduled_for; payment events add order_id and order_number; view events add viewed_at; quote events add quote_id, the customer's name and phone, and the requested items.
Automatic reminders produce both an Invoice Reminder Sent event and, because Shopify re-sends the invoice, an Invoice Sent event. Trigger reminder-specific flows from Invoice Reminder Sent.
Recipes
A good rule of thumb for splitting work between the two systems: let Shopify keep sending what it already sends well (the invoice itself), and use Klaviyo for the messages Shopify can't send at all - branded follow-ups, SMS, quote confirmations, and onboarding. The events don't care who sends the email: Invoice Sent, Invoice Viewed and Invoice Paid fire on the activity itself, so your Klaviyo funnel and dashboards work even if every customer-facing email stays native.
Keep invoiced customers out of Abandoned Checkout
Klaviyo can't tell an invoice checkout apart from an abandoned cart, so customers you've invoiced may receive "you left something behind" emails. To exclude them:
- In Klaviyo, open your Abandoned Checkout (or Abandoned Cart) flow.
- Open the trigger settings and add a flow filter: What someone has done (or not done) → Invoice Sent → zero times → in the last 14 days.
- Update the flow.
Branded invoice reminders
The app's built-in payment reminders use Shopify's invoice email template. If you'd rather send reminders with your own branding, templates and copy, build them as a Klaviyo flow instead:
- Create a flow triggered by Invoice Sent.
- Add a trigger filter:
is_first_invoiceequalstrue. This makes the flow start once per invoice - re-sends won't restart it. - Add a time delay (say 3 days), then a flow filter on the email: Invoice Paid → zero times → since starting this flow.
- Design the email your way. Link the payment button to
{{ event.invoice_url }}- that's the customer's secure Shopify payment link - and personalise with{{ event.draft_name }},{{ event.items }}and the event's value. - Repeat delays + filtered emails for your second and third reminders, escalating the tone as you go.
- Mark each message as transactional so it reaches customers who haven't opted into marketing.
If you build reminders in Klaviyo, turn off the app's built-in reminders on the Reminders page. Running both means your customer gets two reminder emails for the same unpaid invoice.
SMS payment reminders
A text usually gets seen faster than a third email. If you use Klaviyo SMS, add a text nudge for unpaid invoices:
- In your branded reminder flow above (or a separate flow triggered the same way), add an SMS step after your first email reminder, behind the same Invoice Paid → zero times filter.
- Keep it short: who you are, the invoice number (
{{ event.draft_name }}), and the payment link ({{ event.invoice_url }}). - Mark the message transactional so it can reach profiles who haven't subscribed to marketing SMS.
The customer's phone number is included on events whenever the draft order or customer record has one; profiles without a phone number simply skip the SMS step.
Instant quote acknowledgments
New quote requests land on the Quotes page in the app, but the customer hears nothing until you act. A confirmation sets expectations and buys you time to price the quote:
- Create a flow triggered by Quote Requested with no delay.
- Send a short email: "We've received your request and will get back to you within 1 business day." Include what they asked for with
{{ event.items }}, and mark it transactional. - Optionally, create a second flow on Quote Converted that tells the customer their quote is ready and links to
{{ event.invoice_url }}so they can pay straight away.
Onboard new invoice customers
The first invoice is a natural moment to explain how buying from you on invoice works - payment methods and terms, who to contact, what happens after payment. To catch only each customer's first-ever invoice:
- Create a flow triggered by Invoice Sent.
- Add a flow filter: What someone has done (or not done) → Invoice Sent → equals → 1 → over all time. At the moment the flow starts the triggering event is the profile's only one, so this matches first-time invoice customers and quietly drops repeat buyers.
- Send your welcome/onboarding email alongside (not instead of) the invoice itself.
This pairs well with the branded reminder flow: new accounts get the explainer, everyone gets the follow-ups.
Sending email to customers who haven't opted in
Invoice and quote messages are transactional - the customer asked for the invoice or quote, so telling them it's ready is a service message, not marketing. In Klaviyo, mark those flow messages as transactional (open the message, then Apply for transactional status) and they send regardless of subscription status. Only metric-triggered flows can be marked transactional, which is exactly what these are.
We never set marketing consent on your behalf. Customers who haven't opted in stay unsubscribed in Klaviyo, exactly as they were.
Checking that it's working
The Integrations page shows your connected account, when you connected, and Last event sent. If Klaviyo rejects an event, the reason is shown on the page.
Events are delivered in the background, so expect a short delay - usually well under a minute - between the action in Shopify and the event appearing on the customer's profile in Klaviyo. Draft orders without a customer email are skipped, since there is no profile to attach the event to.
Troubleshooting
- "Reconnect required" banner: Klaviyo revoked our access, usually because the app was removed inside Klaviyo or its permissions changed. Click Reconnect to restore delivery.
- A metric is missing from the flow dropdown: metrics only appear in Klaviyo after their event has fired at least once. Use Send a test event for Invoice Sent, or perform the action once for the others.
- An event isn't showing on a profile: we match profiles by email address. Check the email on the draft order matches the profile in Klaviyo, and that the draft order actually has a customer email.
- Duplicate events after a retry: each event carries a unique ID, so Klaviyo keeps only one copy even if it is delivered more than once.
Disconnecting stops all events immediately and revokes the app's access in Klaviyo. Events already sent stay on your profiles.
Need help?
Reach out at hello@conspireagency.com and we'll help you get your flows set up.