Posters
Manage QR code signup posters
Posters are printable QR code signup sheets that customers scan to join your loyalty program. Each poster is tied to a loyalty card and generates a unique public signup URL. Posters can be customized with colors, titles, and paper sizes to match your store branding.
Returns all posters for the store. Optionally filter by card or active status.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id
|
Must be a number. | Required |
Store (account) ID |
card_id
|
Must be a number. | Optional |
Filter posters belonging to a specific card |
active
|
Must be a String | Optional |
When present, return only active posters |
Error Codes
| Code | Description |
|---|---|
401
|
Unauthorized – invalid or missing API token |
404
|
Store not found |
Returns
Code: 200
An array of poster objects
| Name | Type | Required | Description |
|---|---|---|---|
id
|
Must be a Integer | Required |
Unique poster ID |
account_id
|
Must be a Integer | Required |
Parent store ID |
card_id
|
Must be a Integer | Required |
Loyalty card customers are signed up to |
title
|
Must be a String | Required |
Heading printed on the poster (nil allowed) |
paper_size
|
Must be a String | Required |
Paper size the poster is laid out for |
primary_color
|
Must be a String | Required |
Hex colour for the poster background (nil allowed) |
secondary_color
|
Must be a String | Required |
Hex accent colour (nil allowed) |
text_color
|
Must be a String | Required |
Hex colour for poster text (nil allowed) |
contact_collection_mode
|
Must be a String | Required |
Which contact fields appear on the public signup form: ‘email_and_phone’, ‘email_only’, or ‘phone_only’ |
collect_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects email |
collect_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects phone number |
require_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether email is required when it is collected |
require_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether phone number is required when it is collected |
require_birthday
|
Must be one of: true, false, 1, 0.
|
Required |
Whether date of birth is required on the public signup form |
minimum_age
|
Must be a Integer | Required |
Minimum customer age required for signup (nil allowed) |
active
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup URL is live |
signup_url
|
Must be a String | Required |
Public URL the QR code points at |
display_url
|
Must be a String | Required |
URL of the on screen version of the poster |
qr_code_url
|
Must be a String | Required |
URL encoded in the QR code |
created_at
|
Must be a String | Required |
ISO 8601 creation timestamp |
updated_at
|
Must be a String | Required |
ISO 8601 last-update timestamp |
Returns a single poster by ID, including generated signup and display URLs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id
|
Must be a number. | Required |
Store (account) ID |
id
|
Must be a number. | Required |
Poster ID |
Error Codes
| Code | Description |
|---|---|
401
|
Unauthorized – invalid or missing API token |
404
|
Store or poster not found |
Returns
Code: 200
A poster object
| Name | Type | Required | Description |
|---|---|---|---|
id
|
Must be a Integer | Required |
Unique poster ID |
account_id
|
Must be a Integer | Required |
Parent store ID |
card_id
|
Must be a Integer | Required |
Loyalty card customers are signed up to |
title
|
Must be a String | Required |
Heading printed on the poster (nil allowed) |
paper_size
|
Must be a String | Required |
Paper size the poster is laid out for |
primary_color
|
Must be a String | Required |
Hex colour for the poster background (nil allowed) |
secondary_color
|
Must be a String | Required |
Hex accent colour (nil allowed) |
text_color
|
Must be a String | Required |
Hex colour for poster text (nil allowed) |
contact_collection_mode
|
Must be a String | Required |
Which contact fields appear on the public signup form: ‘email_and_phone’, ‘email_only’, or ‘phone_only’ |
collect_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects email |
collect_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects phone number |
require_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether email is required when it is collected |
require_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether phone number is required when it is collected |
require_birthday
|
Must be one of: true, false, 1, 0.
|
Required |
Whether date of birth is required on the public signup form |
minimum_age
|
Must be a Integer | Required |
Minimum customer age required for signup (nil allowed) |
active
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup URL is live |
signup_url
|
Must be a String | Required |
Public URL the QR code points at |
display_url
|
Must be a String | Required |
URL of the on screen version of the poster |
qr_code_url
|
Must be a String | Required |
URL encoded in the QR code |
created_at
|
Must be a String | Required |
ISO 8601 creation timestamp |
updated_at
|
Must be a String | Required |
ISO 8601 last-update timestamp |
Creates a new printable QR code poster for customer signup. The poster will automatically generate a unique public signup URL and QR code. The card_id is required on create to associate the poster with a loyalty card.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id
|
Must be a number. | Required |
Store (account) ID |
poster
|
Must be a Hash | Required |
Poster attributes |
poster[card_id]
|
Must be a number. | Required |
ID of the loyalty card this poster links to |
poster[title]
|
Must be a String | Optional |
Headline text displayed on the poster |
poster[paper_size]
|
Must be a String | Optional |
Print size – one of: a4, a5, a6, letter |
poster[primary_color]
|
Must be a String | Optional |
Primary brand color as a hex string (e.g. ‘#FF5733’) |
poster[secondary_color]
|
Must be a String | Optional |
Secondary brand color as a hex string |
poster[text_color]
|
Must be a String | Optional |
Text color as a hex string |
poster[contact_collection_mode]
|
Must be a String | Optional |
Which contact fields appear on the public signup form |
poster[require_email]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether email is required when it is collected |
poster[require_phone]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether phone number is required when it is collected |
poster[require_birthday]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether date of birth is required on the public signup form |
poster[minimum_age]
|
Must be a number. | Optional |
Minimum customer age required for signup. Requires require_birthday to be true. |
poster[active]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether the poster is active (defaults to true) |
Error Codes
| Code | Description |
|---|---|
401
|
Unauthorized – invalid or missing API token |
404
|
Store not found |
422
|
Validation failed – check `errors` for details |
Returns
Code: 201
The newly created poster object
| Name | Type | Required | Description |
|---|---|---|---|
id
|
Must be a Integer | Required |
Unique poster ID |
account_id
|
Must be a Integer | Required |
Parent store ID |
card_id
|
Must be a Integer | Required |
Loyalty card customers are signed up to |
title
|
Must be a String | Required |
Heading printed on the poster (nil allowed) |
paper_size
|
Must be a String | Required |
Paper size the poster is laid out for |
primary_color
|
Must be a String | Required |
Hex colour for the poster background (nil allowed) |
secondary_color
|
Must be a String | Required |
Hex accent colour (nil allowed) |
text_color
|
Must be a String | Required |
Hex colour for poster text (nil allowed) |
contact_collection_mode
|
Must be a String | Required |
Which contact fields appear on the public signup form: ‘email_and_phone’, ‘email_only’, or ‘phone_only’ |
collect_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects email |
collect_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects phone number |
require_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether email is required when it is collected |
require_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether phone number is required when it is collected |
require_birthday
|
Must be one of: true, false, 1, 0.
|
Required |
Whether date of birth is required on the public signup form |
minimum_age
|
Must be a Integer | Required |
Minimum customer age required for signup (nil allowed) |
active
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup URL is live |
signup_url
|
Must be a String | Required |
Public URL the QR code points at |
display_url
|
Must be a String | Required |
URL of the on screen version of the poster |
qr_code_url
|
Must be a String | Required |
URL encoded in the QR code |
created_at
|
Must be a String | Required |
ISO 8601 creation timestamp |
updated_at
|
Must be a String | Required |
ISO 8601 last-update timestamp |
Updates an existing poster. The card_id cannot be changed after creation.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id
|
Must be a number. | Required |
Store (account) ID |
id
|
Must be a number. | Required |
Poster ID |
poster
|
Must be a Hash | Required |
Poster attributes to update |
poster[title]
|
Must be a String | Optional |
Headline text displayed on the poster |
poster[paper_size]
|
Must be a String | Optional |
Print size – one of: a4, a5, a6, letter |
poster[primary_color]
|
Must be a String | Optional |
Primary brand color as a hex string |
poster[secondary_color]
|
Must be a String | Optional |
Secondary brand color as a hex string |
poster[text_color]
|
Must be a String | Optional |
Text color as a hex string |
poster[contact_collection_mode]
|
Must be a String | Optional |
Which contact fields appear on the public signup form |
poster[require_email]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether email is required when it is collected |
poster[require_phone]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether phone number is required when it is collected |
poster[require_birthday]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether date of birth is required on the public signup form |
poster[minimum_age]
|
Must be a number. | Optional |
Minimum customer age required for signup. Requires require_birthday to be true. |
poster[active]
|
Must be one of: true, false, 1, 0.
|
Optional |
Whether the poster is active |
Error Codes
| Code | Description |
|---|---|
401
|
Unauthorized – invalid or missing API token |
404
|
Store or poster not found |
422
|
Validation failed – check `errors` for details |
Returns
Code: 200
The updated poster object
| Name | Type | Required | Description |
|---|---|---|---|
id
|
Must be a Integer | Required |
Unique poster ID |
account_id
|
Must be a Integer | Required |
Parent store ID |
card_id
|
Must be a Integer | Required |
Loyalty card customers are signed up to |
title
|
Must be a String | Required |
Heading printed on the poster (nil allowed) |
paper_size
|
Must be a String | Required |
Paper size the poster is laid out for |
primary_color
|
Must be a String | Required |
Hex colour for the poster background (nil allowed) |
secondary_color
|
Must be a String | Required |
Hex accent colour (nil allowed) |
text_color
|
Must be a String | Required |
Hex colour for poster text (nil allowed) |
contact_collection_mode
|
Must be a String | Required |
Which contact fields appear on the public signup form: ‘email_and_phone’, ‘email_only’, or ‘phone_only’ |
collect_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects email |
collect_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup form collects phone number |
require_email
|
Must be one of: true, false, 1, 0.
|
Required |
Whether email is required when it is collected |
require_phone
|
Must be one of: true, false, 1, 0.
|
Required |
Whether phone number is required when it is collected |
require_birthday
|
Must be one of: true, false, 1, 0.
|
Required |
Whether date of birth is required on the public signup form |
minimum_age
|
Must be a Integer | Required |
Minimum customer age required for signup (nil allowed) |
active
|
Must be one of: true, false, 1, 0.
|
Required |
Whether the public signup URL is live |
signup_url
|
Must be a String | Required |
Public URL the QR code points at |
display_url
|
Must be a String | Required |
URL of the on screen version of the poster |
qr_code_url
|
Must be a String | Required |
URL encoded in the QR code |
created_at
|
Must be a String | Required |
ISO 8601 creation timestamp |
updated_at
|
Must be a String | Required |
ISO 8601 last-update timestamp |
Permanently deletes a poster. The public signup URL will stop working.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
account_id
|
Must be a number. | Required |
Store (account) ID |
id
|
Must be a number. | Required |
Poster ID |
Error Codes
| Code | Description |
|---|---|
401
|
Unauthorized – invalid or missing API token |
404
|
Store or poster not found |
422
|
Poster could not be deleted |
Returns
Code: 204
No content. The poster was deleted and its signup URL deactivated.