Skip to content
[ ]
Promotion Vault

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.

Store Checkout PV Issues Card
1 Part one / How it works

The reward is a product, not a code

Yes

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

Buyer YOUR CUSTOMER Shopify store CHECKOUT + ORDERS Zapier TWO ZAPS Promotion Vault ISSUANCE API 1 adds a $50 reward to the cart and checks out 2 payment is captured and the order is created 3 Shopify fires the order paid trigger ORDER PAID 4 acknowledges immediately, then does the work 5 issue request: amount, recipient, program SHOPIFY ORDER ID 6 transaction ID, or a reason it failed 7 we deliver the activation link straight to the recipient 8 marks the order fulfilled and stores our reference on it 9 order shows as fulfilled, reference visible
Green marks the Shopify side of the exchange, gold marks the Promotion Vault side. Steps 3 through 8 happen in the same moment as the order, not on a batch or a nightly file.

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.

Recommended

Option A. Zapier, no code

Shopify ORDER PAID Zapier TWO ZAPS Promotion Vault ISSUANCE API TRANSACTION DETAILS BACK ONTO THE ORDER

Two Zaps, both directions. One sends us the paid order. The second listens for our successful transaction and writes the reference back onto that Shopify order, so the store record is complete without anyone touching code.

Any Shopify plan, since the trigger is Zapier's rather than Shopify Flow's. We supply the Zap templates and build them with you on a screenshare.

Simplest possible

Option B. A basic Shopify webhook

Shopify EVERY PAID ORDER WEBHOOK Promotion Vault ISSUANCE API no return path, we filter non-reward orders out on our side

Four fields in the Shopify admin and you are done. It fires on every paid order in the store, not just rewards, because native webhooks have no SKU condition. We discard the rest.

One direction only. The reward record lives in our dashboard, and Shopify’s own auto fulfill setting closes the order out.

No integration at all

Option C. Prepurchased reward links

Shopify ORDER PAID Your team SENDS A LINK Associate EMAIL OR SMS Your link batch

You buy reward links from us by value, then send one to the associate yourself when the order comes through, or when an anniversary or WOW moment comes up with no order behind it at all.

Tracking and reporting are the same as the other two. We see every link when it is activated, so redemption, brand chosen, and timing all report the same way.

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.

Our recommendation

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.

Worth knowing

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.

Option C billing

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

1 Would there be any order processing or order entry required on our end, would these orders need to be entered into ShopWorks, or could they be managed entirely through Shopify?
No order entry on your end, and nothing goes into ShopWorks. A reward is an ordinary digital product with the physical product box unchecked, so it never enters shipping, picking, or a decoration queue. The order lives in Shopify, the reward record lives in our dashboard, and the Shopify order ID ties the two together. On this page: Step one, create a product for each reward value
2 Is the API integrated into our Shopify environment, or does it operate entirely within PromotionVault’s system?
The issuance API is entirely ours. Nothing is installed into your Shopify environment and no app of ours runs inside your store. The only thing that lives on your side is a Zap, or a webhook, that posts the paid order to us. Picking the reward brand happens on our site, after the order. On this page: Three ways to do it
3 Once an order is placed through PromotionVault, how are we notified that it has been processed or fulfilled?
In the same transaction. Our response to the call carries our transaction ID, or the reason it failed, within seconds of the order being paid. Every send also appears in the Promotion Vault dashboard, which your team gets a login to, and Zapier can push a notification anywhere you want it. On this page: The full round trip, steps 5 and 6
4 How is the Shopify store updated to reflect that an order has been fulfilled? Are order updates provided daily, weekly, or monthly?
There is no daily, weekly, or monthly file. With Zapier, the second Zap updates that specific order within seconds of our confirmation, writing our transaction reference onto it and marking it fulfilled. With a basic webhook and no write-back, Shopify’s own auto fulfill setting closes the order out and the reward record lives in our dashboard instead. On this page: Step two, point the order at us
5 How is customer service handled if there are issues with an order? Would associates contact PromotionVault directly?
Split by the kind of question. Card level questions, balance, a card that will not load, a reissue, come to us and we escalate to the issuer. Order level questions, the order did not go through or the link needs resending, are handled by your team in our dashboard. We train your team on both, and if you would rather associates come straight to us, we can take them. On this page: What each side is responsible for
6 Who is invoiced for redeemed gift cards, New Era or GoodLife?
Whichever entity holds the agreement with us, which we expect to be GoodLife as the program owner, with New Era operating the store. On the Zapier and webhook routes we bill on activation plus our 10% service fee, so an unactivated reward costs nothing. On prepurchased links the service fee is paid when you buy the batch and the reward value is still billed on activation. This is one of the five items we need confirmed back from you so we paper it to the right entity. On this page: What each side is responsible for
7 If no lists are required, how are orders, redemption codes, and gift card usage tracked?
Every send is its own record: Shopify order ID, recipient, amount, send time, activation status and time, brand chosen, and our transaction ID. Both sides get a login to view and export it. What the phrase means is that you do not have to prepare a list of recipients in advance, not that nothing is tracked. On this page: The reward is a product, not a code
8 How are redemption codes marked as used? If an associate clicks a link that directs them to the PromotionVault website and redeems a gift card outside of Shopify, it seems the original code in our Shopify store could remain active and potentially be used again to purchase a physical item.
There is no code in your Shopify store to reuse. Nothing is minted in advance and nothing is loaded into the store. The link we send is generated for one order, is single use, and is dead once the reward is activated. Your Shopify order is a purchase record, not an instrument, so there is no second balance that could buy a physical item. On this page: The reward is a product, not a code
9 How are unauthorized or invalid transactions prevented? If the redemption process takes place entirely through PromotionVault, how do they verify that the individual redeeming the code is the authorized recipient and not using someone else’s code?
Four layers. The purchase is authorized at your checkout, the same way any other product is, and we never issue a reward your store did not send us. The activation link goes only to the contact of record pulled from your roster, not a field the buyer types at checkout, so it cannot be redirected. The link is single use and tied to that one order. And the storefront itself should be gated, by password, required accounts, or B2B company accounts, so only invited associates can reach the product at all. On this page: Step three, and the storefront gating card below
2 Part two / Setting it up

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.

One thing to avoid

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.

Endpoint URL
to be provided by Promotion Vault
Authorization header
to be provided by Promotion Vault
A

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.

B

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.
What the Zap sends us
POST https://api3.promotionvault.com/...
Authorization: token YOUR-TOKEN
Content-Type: application/json

{
  "team_id": "<your rewards team>",
  "amount": 50.00,
  "recipient": {
    "name": "Jordan Reyes",
    "email": "[email protected]"
  },
  "external_ref": "shopify-5432109876543"
}
What comes back to Zap two
{
  "transaction_id": "pv-tx-8841207",
  "status": "sent",
  "amount": 50.00,
  "external_ref": "shopify-5432109876543"
}
Zap two matches on external_ref, which is the Shopify order ID, and writes transaction_id and status onto that order.
Per the Promotion Vault 3.0 Public API docs

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.