Gift Cards in Your Shopify Store
How a Promotion Vault reward is issued at checkout, and exactly what your team sets up to turn it on.
The reward is a product, not a code
Everything this requires is standard Shopify. You sell the reward as an ordinary digital product. When it is paid for, Shopify tells us, we issue the card, and the order closes itself out. Nothing is minted in advance, and there is no code sitting in your store waiting to be claimed.
That distinction is worth holding onto, because it answers most of the questions that usually come up. There is no inventory of codes to load, reconcile, or expire. There is no second instrument that could be spent twice. The buyer's authorization happens at your checkout, exactly the way it does for a hat or a jacket, and we never issue a reward your store did not authorize.
The full round trip
Three ways to do it
None of the three involve custom development. Zapier is our preferred route and a basic Shopify webhook is the close second. The third needs no integration at all, and is there if you would rather start sending rewards before anything is wired up.
The gold return path is what makes the store record trustworthy on its own. Without something coming back, an outage on either side looks identical to a successful order. Zapier gives you that return path without writing any of it.
Do all of it in Zapier
Two Zaps, both directions, live in an afternoon. Nobody hosts an endpoint or writes code, and adding a denomination later means adding a product in Shopify, not editing a Zap.
Only Zapier can filter by SKU
Shopify’s native webhooks have no SKU, product, or tag condition, so a basic webhook sends us every paid order and we filter on our end. Zapier puts that filter before the send instead. Either works, so it is a question of where the filter lives.
Links bill in two parts
You pay the service fee when you buy the links, and the reward value when an associate activates one. An unsent or unredeemed link never costs you the reward itself. Since you already know each month how many associates are due an anniversary or WOW moment reward, the batch is straightforward to size.
Either way, the connection is configured once and adding a new denomination later means adding a product in Shopify, not touching it again.
What each side is responsible for
| Piece | Owner | What it involves |
|---|---|---|
| Reward products in the store | You | One product per denomination. Part Two walks through it field by field. |
| The connection | Built together | Two Zaps, or one webhook in the Shopify admin. We supply the template and configure it with you on a screenshare. No code either way. |
| Issuing and delivering the card | Promotion Vault | Activation link sent to the recipient, brand catalog, card issuance. |
| Card level support | Promotion Vault | Balance questions, reissues, escalation to the card issuer. |
| Order level support | You, with our dashboard | Order did not go through, resend the link. We train your team on both. |
| Reporting and reconciliation | Shared | Every record carries the Shopify order ID, so the two systems line up without a spreadsheet in between. |
Your nine questions, answered
Step one: create a product for each reward value
In Shopify, go to Products, then Add product. You do this once per denomination. Everything not listed below you can fill in however you normally would.
| Field | What to enter |
|---|---|
| Title | $25 Reward, Gift Card of Choice |
| Description | Your copy. For example: pick your own gift card from hundreds of brands. After checkout you will get a link to choose your card. |
| Media | Your program artwork. We can supply a generic reward image if you would rather not create one. |
| Price | 25.00 |
| SKU | PV-REWARD-25 |
| Track quantity | Leave unchecked |
| This is a physical product | Leave unchecked. The important one. It keeps the reward out of shipping, picking, and any decoration queue. |
| Product type | Reward |
| Status | Active, once you are ready to go live |
Three to start with, as an example
| Title | Price | SKU |
|---|---|---|
| $10 Reward, Gift Card of Choice | 10.00 | PV-REWARD-10 |
| $25 Reward, Gift Card of Choice | 25.00 | PV-REWARD-25 |
| $50 Reward, Gift Card of Choice | 50.00 | PV-REWARD-50 |
Whatever values you offer, create a SKU for each one, same pattern every time: PV-REWARD- followed by the dollar amount. The naming matters on our side, because the SKU is how we know what value to issue. Keep the format consistent and tell us any denomination not listed here.
Do not use Shopify's built-in gift card product type. That creates Shopify store credit, which is a different instrument and is not what we are issuing. These are ordinary products that happen to be digital.
Step two: point the order at us
This is the piece that hands the order off. We will send you the two values below, and we will do this part together on a screenshare so you are not figuring it out cold.
Zapier, recommended
Zap one, outbound. Trigger: Shopify, New Paid Order. Filter: line item SKU starts with PV-REWARD. Action: Webhooks by Zapier, POST, using the URL and header above.
Zap two, inbound. Trigger: our successful transaction, which we send to a Zapier catch hook. Action: Shopify, update the order that matches the Shopify order ID we return, writing the transaction reference into the order note or a metafield and marking it fulfilled.
The filter is why this is the better route. Only reward orders reach us, every other product in your store is untouched, and the reference lands back on the order without an endpoint to host.
A plain webhook, simpler but noisier
Go to Settings, then Notifications, then Webhooks, then Create webhook. Event: Order payment. Format: JSON. URL as above.
This fires on every paid order in the store, not just rewards, and we filter on our end. It works. It just sends us more traffic than we need.
Step three: four things have to ride on the order
These are the fields the Promotion Vault 3.0 API expects, so the Zap is really a mapping exercise. Everything else on the order is ignored.
| From the order | Maps to | Why we need it |
|---|---|---|
| Recipient name | recipient.name |
Personalizes the delivery and appears on every record. |
| Recipient contact | recipient.email |
Where the activation link goes. Pull it from your roster or the customer record rather than a field the buyer types at checkout. |
| Reward SKU | team_id + amount |
We look the SKU up on our side, and it resolves to the Team the reward is sent from and the value to issue. |
| Shopify order ID | external_ref |
The stable reference that makes a repeated call safe and reconciles your store data against our reward data, line for line. |
Base URL is https://api3.promotionvault.com. Authentication is token based, sent as an Authorization: token YOUR-TOKEN header, and you generate the token yourself at rewards.promotionvault.com/integrations. Rewards are sent from a Team that token has access to, so the SKU resolves to a Team and an amount rather than a program id. Remaining field names are placeholders pending the send reward endpoint spec.
Two things to watch in the mapping. The amount comes from your SKU lookup rather than the order total, so a discounted or zero dollar order still issues the right value. And the contact field is the one to confirm on your end, since sourcing it from your own records rather than a checkout field is what keeps a reward from being redirected.
Step four: test before go live
Once the products exist and the connector is on, we run test orders end to end in a development store together. You will watch the order come through, the link arrive, the recipient choose a brand, and the card issue. Nothing goes live until you have seen it work.
What happens after that
| Stage | Who | Timing |
|---|---|---|
| Endpoint and header returned | Promotion Vault | Same day |
| Reward products created in the store | Your team | 1 to 2 hours |
| Zaps or webhook built on a screenshare | Together | One working session |
| Test orders in a development store | Together | Same session |
| Go live | Your call | When you are satisfied |
Ready to get started?
Connect with our sales team for a demo or sign up for a free account.