Coupon campaigns distribute a different Shopify coupon code to each friend on LINE. Each code is single-use, and you can track distribution and redemption. Redemption is not restricted to the intended recipient, so a shared code can be used by someone else first.
What is a coupon campaign?
A coupon campaign is how you distribute one-code-per-person Shopify coupons through LINE messages.
When you create a campaign, Lumo automatically issues a batch of discount codes in your Shopify store. Insert a coupon variable into a message, and at send time it's replaced with a code unique to each friend. No matter how many times you message the same friend, they keep the same single code.
Here's what you can do:
- Automatically hand out coupons with a Workflow, as a thank-you for ID linkage or a purchase
- Deliver coupons to a targeted Segment through a Message Broadcast or a Rich Message
- Track who received and who redeemed on each friend's activity timeline
What you need to use this feature
You need a connected Shopify store before you can use coupon campaigns.
- Your Shopify store is integrated with Lumo
- The LINE Official Account you'll send coupons from is linked to that Shopify store
- The Lumo app has been granted the permission to manage discounts (write_discounts) on Shopify. For stores integrated before mid-August 2026, opening the Lumo app in the Shopify admin may prompt you to approve the updated permissions
Creating a coupon campaign
You create campaigns from "Coupons" in the Shopify integration settings.
- From "Customer data" in the side menu, open Shopify and select "Coupons"
- Click "Create campaign"
- Fill in each field and save
Settings
| Field | Description |
|---|---|
| "Campaign name" | The name for managing the campaign. It also appears under this name in the variable picker |
| "Key" | The identifier variables use to reference the campaign. Use lowercase letters, numbers, and underscores. It can't be changed after creation |
| "Discount type" | Choose "Percentage" (%) or "Fixed amount" (an amount in your store's currency) |
| "Discount value" | The size of the discount. For a fixed amount, enter it in your store's currency |
| "Start date and time" / end date and time | The period the coupons can be used. Without an end date and time, the campaign runs indefinitely |
| "Redirect path" | The page a customer lands on after tapping a coupon link and having the discount applied. It starts with "/" (default: /cart) |
| "Code prefix" | The string at the beginning of each issued code (default: LINE). It changes how the codes look to customers |
When you save, Lumo issues the discount codes in your Shopify store automatically. You can check the remaining codes in the "Codes left" column, and Lumo tops them up automatically when they run low.
Inserting a coupon into a message
You insert coupons from the "Shopify coupons" group in the variable picker ("Insert variable") on the message editor. Each campaign offers two variables:
| Variable | What it is | When to use it |
|---|---|---|
| {campaign name} coupon code | The code string itself (e.g. LINE-AB12CD34) | When you show the code in text and customers enter it at checkout |
| {campaign name} coupon link | A URL that applies the discount automatically when tapped | When you distribute it as a Rich Message button or a text link. Customers don't have to type anything |
The variables work in Message Broadcasts, Auto Send Messages, Workflow messages, and the Rich Message URL field. At send time, they're replaced with each friend's unique code or URL.
In practice, setting the coupon link in a Rich Message (coupon image) URL field works well. Customers tap the image and arrive at your store with the discount already applied.
Tips for using the variables
- Use the code variable and the link variable from the same campaign as a pair. Variables are campaign-specific, so if your text and your Rich Message point to different campaigns, customers receive two different coupons
- After editing a Rich Message, re-select it in the messages that use it. A message copies the Rich Message's content at the moment you select it, so later edits to the Rich Message itself don't carry over to existing messages
- Test sends issue real codes, just like production sends. Before you go live, you can verify everything on a real device, from code insertion to the discount applying at checkout
Checking the results
Coupon receipt and redemption are recorded on each friend's activity timeline.
- The friend details activity shows entries like "Received coupon" and "Redeemed coupon" with the campaign name
- You can filter the activity by "Coupon received" and "Coupon redeemed"
- If you also use the Klaviyo integration, the events are recorded on the Klaviyo profile as Assigned LINE Coupon and Redeemed LINE Coupon
- If you also use the HubSpot integration, the events are recorded as Assigned LINE Coupon and Redeemed LINE Coupon on the timeline of ID-linked contacts
Since each code ties back to the order it was used on, you can review coupon performance customer by customer.
Ending a campaign
You can stop distributing coupons with an end date and time, or by archiving.
- End date and time: Once the set date and time passes, the codes can no longer be used
- Archive: Select the campaign in the list and run "Archive" to stop it immediately. All of that campaign's coupon codes, including ones already distributed, become unusable. This cannot be undone
When things don't work
Here are common situations in coupon distribution and what to check.
| Situation | What to check |
|---|---|
| You can't create a campaign | Check that the Lumo app has been granted the discount management permission (write_discounts) on Shopify. For stores integrated before mid-August 2026, reopen the Lumo app in the Shopify admin, approve the updated permissions, and try again |
| The discount isn't applied after tapping the link | Check whether the code has already been used. Each code can be redeemed once. A code consumed during a test send stays used in production |
| The text and the image deliver different codes | Check that the code variable in your text and the link variable in your Rich Message point to the same campaign |
| The discount isn't applied while the store is password protected | On an unpublished store, auto-apply doesn't work in a browser that hasn't entered the password. For testing, turning off password protection temporarily is the reliable option |
| The message doesn't get delivered | Check that the campaign status is "Distributing" and the variable key is correct. If a coupon can't be prepared, Lumo doesn't send the message to that friend |