App features
- Customers issue documents themselves from the Thank you page, order status page and emails
- Invoice registration number (Japan) and tax breakdowns by rate (8% / 10%)
- Set your company logo, stamp and theme color
- Print from the admin one order at a time or in bulk
- Documents in Japanese and English
- Pro plan: remarks by payment method or tag, issued tags and issue limits
- Hydrogen plan: issue documents on headless (Hydrogen) stores too
*Note
Supports new customer accounts.
Partially supports classic customer accounts (supported themes: Dawn, Rise and Studio).
When you combine CRM PLUS on LINE with Shopify Flow, a LINE message with a SAKU Receipts "Receipt" button is sent automatically when a customer's payment is complete. The customer only taps the button on LINE to open the receipt for that order.

After setup, customers receive a message like this on LINE.
The overall flow
First, here is how the receipt reaches LINE.

- A customer buys a product and the payment is complete.
- The completed payment is the trigger. A Shopify Flow workflow starts automatically.
- In the workflow, CRM PLUS on LINE sends a message to the customer on LINE. The message has a "Receipt" button with the SAKU Receipts link.
- When the customer taps the button, SAKU Receipts shows the receipt for that order.
This article explains, screen by screen, how to build this flow (workflow) in Shopify Flow. There are four steps.
- Create a workflow and choose "Order paid" as the trigger
- Add the action "LINE Message: Flex" and enter the message
- Save and turn on the workflow
- Check with a test order that the message arrives on LINE
What you need before you start
- SAKU Receipts (installed, with your document settings finished)
- CRM PLUS on LINE (installed and linked to your store's LINE Official Account)
- Shopify Flow (a free Shopify app. If you do not see "Flow" under "Apps" in your admin, install it from the Shopify App Store)
Messages arrive only for customers who are linked to LINE in CRM PLUS on LINE. Customers who are not linked do not receive them.
Download the workflow file and use it (the easiest way)
Download the file below and import it into Shopify Flow. The workflow in this article is created for you. You do not need to build it by hand.
Download the workflow file (crm-plus-on-line-receipt.flow)
What you need first: CRM PLUS on LINE, SAKU Receipts and Shopify Flow must all be installed on your store. If CRM PLUS on LINE is not installed, the action that sends the LINE message shows an error after you import the file.
① In the Shopify admin, open "Apps" → "Flow".
② Click "Import" at the top right.
③ Click "Add file" and choose the file you downloaded (crm-plus-on-line-receipt.flow).
④ Click "Import".
The workflow "CRM PLUS on LINE 購入完了時に領収書ボタンを送信" is created. (The workflow name is in Japanese.)
⑤ Check what is inside the workflow.
- The trigger is "Order paid".
- The action is "LINE Message: Flex" from CRM PLUS on LINE (it sends a LINE message).
- The button link is
{{ shop.primaryDomain.url }}/apps/saku-print?...&type=receipt&locale=ja.
⑥ Test it with a test order, then click "Turn on workflow" at the top right.
For how to test, see "4️⃣ Check with a test order" below.
Note: The file contains only the workflow settings. It contains no store data or personal information.
Note: The imported link opens a Japanese receipt (locale=ja). To open another document (invoice, delivery note or quotation) or an English document, see the explanation of type= and locale= in "Other documents and Japanese documents" below, and change the link.
Note: If you want to build it by hand, start from "1️⃣ Create a workflow and choose the trigger" below.
1️⃣ Create a workflow and choose the trigger
The trigger decides when the workflow starts. Here, choose "when an order is paid".
① Open Shopify Flow and click "Create workflow".
In the Shopify admin left menu, open "Apps" → "Flow" to see your list of workflows. Click "Create workflow" at the top right.
② Click "Select a trigger".
A new workflow screen opens. Click "Select a trigger" below the input field in the center.
Tip: you can also ask Sidekick (Shopify's AI assistant) to build it
On the screen in ②, type a request like the one below into the box in the middle ("Tell me what you want to create…") and send it. Sidekick will build the workflow for you.
Create a workflow that, when an order is paid (Order paid), sends a LINE message to the order's customer with the CRM PLUS on LINE action "LINE Message: Flex". Use {{ order.customer.id }} for the customer.
However, what the AI builds is not always the same. Even if you use Sidekick, always go through steps 1 to 4 in this article and check the following.
- The trigger is "Order paid" (step 1).
- The action is "LINE Message: Flex", and the customer, alternative text and Flex Message container are filled in correctly (step 2). Replace the Flex Message container with the code in this article.
- The workflow is turned on (step 3).
- Place a test order and check that the LINE message arrives and the button opens the receipt (step 4).
③ Choose "Order paid".
Type Order paid in the search field on the left, then click "Order paid (Shopify)". This trigger means "This workflow starts when an order is paid".
④ When "Order paid" is added to the editor, step 1 is done.
This trigger needs no extra settings.

Note: The message is sent for paid orders, so the receipt opens right away when the customer taps the button. (A receipt cannot be opened for an unpaid order.)
2️⃣ Add the action that sends the LINE message
The action decides what the workflow does. Here, add the action that sends a LINE message with CRM PLUS on LINE.
① Add an action under "Order paid".
Click the "+" (or "Action") shown under "Order paid". "Select an action" opens on the left.
② Choose "LINE Message: Flex".
Type LINE Message: Flex in the search field, then click "LINE Message: Flex" from CRM PLUS on LINE (it sends a Flex Message on LINE).
③ Fill in these three fields on the left.
| Field | What to enter |
|---|---|
| Customer | {{ order.customer.id }} (enter it exactly like this. It means "send to the customer of this order") |
| Alternative text | Example: "Your receipt" (the text shown in LINE notifications and the chat list) |
| Flex Message container | Paste all of the "Flex Message code" below |

When you select "LINE Message: Flex", its fields appear on the left. Fill in the fields in the red box.
Pasting code into the Flex Message container is also explained in the official CRM PLUS on LINE manual, "Flex Messageの配信" (Sending Flex Messages, in Japanese).
④ When "Order paid" and "LINE Message: Flex" are connected by a line in the editor, step 2 is done.

The Shopify Flow editor. As in the red box, "LINE Message: Flex" is connected under "Order paid".
Flex Message code
This code shows a thank-you message and a "Receipt" button. Copy all of it and paste it into the "Flex Message container" field in step 2.
{
"type": "bubble",
"body": {
"type": "box",
"layout": "vertical",
"contents": [
{
"type": "text",
"text": "Thank you for your order",
"weight": "bold",
"size": "md",
"wrap": true
},
{
"type": "text",
"text": "Tap the button below to view your receipt.",
"size": "sm",
"color": "#666666",
"margin": "md",
"wrap": true
}
]
},
"footer": {
"type": "box",
"layout": "vertical",
"contents": [
{
"type": "button",
"style": "primary",
"color": "#1DB446",
"action": {
"type": "uri",
"label": "Receipt",
"uri": "{{ shop.primaryDomain.url }}/apps/saku-print?orderId={{ order.legacyResourceId }}&confirmationNo={{ order.confirmationNumber }}&type=receipt&locale=en"
}
}
]
}
}
This code opens English documents (locale=en). To open Japanese documents, change locale=en to locale=ja. See "Other documents and Japanese documents" below.
In this code, some parts are free to change and some must stay as they are.
- You can change: the message text ("Thank you for your order" and "Tap the button below…"), the button label (
Receiptin"label": "Receipt"), and the button color ("color": "#1DB446"). -
You must not change: the link in the
"uri"line. Only the document type and the language can be changed, as described in "Other documents and Japanese documents" below.
About the link in the code
This is the link that opens when the button is tapped (it is the same as the "uri" line in the code).
{{ shop.primaryDomain.url }}/apps/saku-print?orderId={{ order.legacyResourceId }}&confirmationNo={{ order.confirmationNumber }}&type=receipt&locale=en
Shopify Flow replaces the {{ … }} parts for each order automatically. You do not need to change them by hand.
{{ shop.primaryDomain.url }}: your store URL{{ order.legacyResourceId }}: the order ID (number){{ order.confirmationNumber }}: the order's confirmation number
The document opens only when the order ID and confirmation number match. Customers can open the receipt from the button without logging in.
3️⃣ Save and turn on the workflow
Click "Turn on workflow" at the top right. LINE messages are sent for orders paid after you turn it on. (Orders from before you turn it on do not get a message.)
4️⃣ Check with a test order
Place a test order with a customer account that is linked to LINE. After payment, a message with a "Receipt" button arrives on LINE. Tap the button and check that the receipt opens.

Tapping the button on LINE opens the receipt for that order.
Other documents and Japanese documents
The document the button opens is set by type=receipt and locale=en near the end of the link.
Change the document type: change only receipt in type=receipt (the part after =) to one of these words.
| Document you want to open | Word to put after type=
|
Example after the change |
|---|---|---|
| Receipt |
receipt (the original) |
type=receipt |
| Invoice | invoice |
type=invoice |
| Delivery note | delivery_note |
type=delivery_note |
| Quotation | quotation |
type=quotation |
For example, for an invoice button, the link looks like this (only the part after type= has changed).
{{ shop.primaryDomain.url }}/apps/saku-print?orderId={{ order.legacyResourceId }}&confirmationNo={{ order.confirmationNumber }}&type=invoice&locale=en
Also change the button label ("label": "Receipt") to match, for example "label": "Invoice".
Open a Japanese document: change en in locale=en to ja, so it reads locale=ja.
- Receipts and delivery notes open for paid orders. For unpaid orders, a message says the order has not been paid yet.
- To show two or more buttons, such as a receipt and an invoice, copy
{ "type": "button", … }inside"footer"and put the copies in a row, separated by commas (,).
Hydrogen (headless) stores
On Hydrogen stores, /apps/saku-print links do not open. Stores on the Hydrogen plan have a dedicated document entry (https://receipt.saku-apps.com/document). This entry is a Hydrogen plan feature (free to try on development stores).
Replace the link in the "uri" line of the Flex Message code with this link.
https://receipt.saku-apps.com/document?shop={{ shop.myshopifyDomain }}&orderId={{ order.legacyResourceId }}&confirmationNo={{ order.confirmationNumber }}&type=receipt
-
{{ shop.myshopifyDomain }}is filled in automatically with your store's myshopify domain (for example,example.myshopify.com). - To change the document type, change only
receiptintype=receipt, as above. - For English, add
&lang=ento the end of the link.
For details, see "Setup guide for Hydrogen (headless) stores".
Using other LINE or messaging apps
Other LINE or messaging apps that send messages through Shopify Flow should work the same way if you put the same link in the message. Field names and message formats differ by app, so always check with a test order that the receipt opens from the button or link.
Reference links
- CRM PLUS on LINE (Shopify App Store)
- CRM PLUS on LINE official site (Social PLUS, in Japanese)
- Sending Flex Messages (CRM PLUS on LINE setup manual, in Japanese)
- Flex Message template gallery (Social PLUS, in Japanese)
Troubleshooting
-
The LINE message does not arrive
Check that the workflow is turned on. Customers who are not linked to LINE do not receive messages. See the CRM PLUS on LINE help for how linking works. You can also check for errors under "Recent runs" in Shopify Flow. -
The Flex Message container shows an error
Part of the code may be missing. Copy all of the code in this article again, from the first{to the last}, and paste it. -
The button shows "Order not found"
Check the link variables. Use{{ order.legacyResourceId }}(the numeric order ID) fororderId=.{{ order.id }}does not work. -
The button asks you to log in again
TheconfirmationNo={{ order.confirmationNumber }}part of the link may be missing or changed. Copy the link in this article again and paste it. -
The page says the order has not been paid
Receipts open for paid orders. Use "Order paid" as the trigger. -
On a Hydrogen store, the button does not open the document
Check that the link is not still/apps/saku-print. Replace it with the link in "Hydrogen (headless) stores" above.
If the problem continues, contact info@saku-apps.com.
To send receipts by email, see "How to add receipt buttons to notification emails" and "How to send order confirmation emails from other email apps".