What This Screen Does
This is where you create a new campaign membership type. Think of a campaign as a special, time-limited membership offer — like a summer promotion or a New Year deal. You set the price, how long it lasts, what classes members can access, and when the campaign is available for purchase. Once a campaign membership expires, it can even automatically convert into a regular membership.
How to Get There
Open the dashboard.
In the left-hand menu, click Campaign Type.
Click the + New Campaign Type button in the top-right corner.
You are now on the Create Campaign Type screen.
Step-by-Step Guide
1. Fill In Basic Information
This section covers the name, descriptions, image, contract, and conversion settings for the campaign.
Field | Required | What to Enter |
Name | Yes | The display name of this campaign type. This is what members will see (e.g. “Summer Special 2026”). |
Short Description | No | A brief summary shown alongside the name in lists and cards. Keep it to a sentence or two. |
Cover Image | Yes | Upload one image (JPEG, PNG, or GIF) that represents this campaign. The image will be cropped to a 4:3 ratio. |
Description | Yes | A full, detailed description of the campaign including benefits and features. Use the rich-text editor to format the text. |
Contract | Yes | Pick the legal contract template that members must agree to when they purchase this campaign membership. |
Converts to contingent | No | Choose a regular (contingent) membership type that members will be automatically switched to when this campaign expires. Select “None” if the membership should simply end. |
2. Configure Properties
Properties control how billing works, access permissions, and other operational settings.
Field | Required | What to Enter |
Frequency | Yes | How often members are charged — Monthly, Yearly, One-Time, Weekly, etc. |
Product Code | No | An internal product code for your records and reporting. |
Product SKU | No | A Stock Keeping Unit identifier for inventory management. |
Number of seats | No | Maximum number of members who can hold this campaign membership at the same time. Leave empty for unlimited. |
Account number for bookkeeping | No | Account number used when exporting financial data to your accounting system. |
Publicly available | No | Toggle on to show this campaign in your online store and member portal. On by default. |
Has access to door system | No | Toggle on to allow members with this campaign to unlock doors using access control. On by default. |
Limit training hours | No | Toggle on to restrict when members can access the facility. Only available on Premium or Platinum plans. |
Allows training in all gyms | No | Toggle on to let members train at any gym in your chain, not just their home location. Off by default. |
Counts towards global limit | No | Include this campaign type when counting total active memberships against your global maximum. Only shown if you have a global max set. On by default. |
Anchor memberships renewal to the 1st day of the month | No | Align all renewals to the first of each month regardless of purchase date. Only shown for certain billing frequencies (e.g. Monthly, Quarterly). May be locked if already set at the gym level. |
Limit lock access | No | Toggle on to restrict which specific doors/locks members can open. Only shown if your system has locks configured. |
Lock ID | Conditional | If “Limit lock access” is on, select one or more locks from the list. At least one lock is required. |
3. Set Validity (Membership Duration)
This section defines when a membership starts and when it expires. You can choose a fixed expiration date or a duration in months/days — but not both at the same time.
Field | Required | What to Enter |
Membership becomes active on | No | The date the membership starts. Leave empty to activate immediately upon purchase. Useful if you sell memberships before a campaign begins. |
Membership expires on (fixed date) | No | A specific calendar date when the membership ends. Only shown if you have not entered a duration in months or days. |
Duration in months | No | Number of months the membership stays valid after activation (e.g. “3” for a three-month campaign). Only shown if you have not set a fixed expiration date. |
Duration in days | No | Number of days the membership stays valid after activation (e.g. “30” for a 30-day campaign). Only shown if you have not set a fixed expiration date. |
Tip: If you set both “Duration in months” and “Duration in days”, the system uses both combined. For example, 1 month and 15 days means the membership lasts one month and fifteen days from activation.
4. Configure Training Settings
Control what classes members can book and how many bookings they are allowed.
Field | Required | What to Enter |
Maximum number of active bookings | No | How many upcoming classes a member can be registered for at the same time. Leave empty for unlimited. |
Days in advance for bookings | No | How far ahead members can book classes. For example, “7” means they can book up to one week in advance. |
Maximum number of bookings | No | Total classes a member can book within the training limit period. Leave empty for unlimited. |
Training limit period | Conditional | The time window for the booking limit (e.g. Monthly, Weekly). Only shown when “Maximum number of bookings” has a value. |
Allowed classes | No | Select which class types members can book. Leave empty to allow access to all classes. |
5. Set Training Hours (Optional)
This section only appears if you toggled Limit training hours on in the Properties section.
Training hours control when members with this campaign can access the facility (affects door access).
If no training hours are set, the system uses the gym’s regular opening hours.
For each time slot:
Field | Required | What to Enter |
Day of week | Yes | Select the day (Monday through Sunday). |
Open | Yes | The time access begins (24-hour format). |
Closed | Yes | The time access ends (24-hour format). |
Click Add opening hour to add more time slots.
Click the red X button next to a row to remove it.
You can add multiple time slots for the same day (e.g. morning and evening access).
6. Choose a Welcome Email
Field | Required | What to Enter |
Welcome email | Yes | Select the email template that will be sent to members when they purchase this campaign. Only templates of type “Welcome Email” appear in this list. |
7. Set Pricing and Availability
Field | Required | What to Enter |
Regular Price | Yes | The recurring price members pay based on the billing frequency you chose. Enter the amount in your default currency. |
VAT rate | Yes | Select the applicable tax rate for this campaign. |
Setup fee | No | Toggle on to charge a one-time fee when members first purchase. On by default. |
Setup fee amount | Conditional | The one-time fee amount. Only shown when “Setup fee” is toggled on. VAT is based on the global default set in chain settings. |
Available in gyms | Yes | Select which gym locations can sell this campaign. At least one gym must be selected. Defaults to your currently selected gym. |
Can be purchased from | Yes | The first date this campaign becomes available for purchase. |
Can be purchased until | No | The last date this campaign can be purchased. Leave empty if there is no end date. |
Note: The “Can be purchased until” date must be later than the “Can be purchased from” date.
8. Save
Click the Create button at the bottom-right of the form.
The system will:
Validate all your inputs.
Create the campaign type record.
Upload the cover image.
Redirect you back to the previous page.
You will see a green “Create success!” notification at the bottom of the screen.
What Happens Behind the Scenes
You click "Create"
|
v
Form validates all fields (Yup schema)
|
v
API call: CampaignTypesService.create({ body: formData })
|
v
Campaign type record is created, server returns the new ID
|
v
API call: CampaignTypesService.addCoverImage({ id, files: [image] })
|
v
Cover image is uploaded and attached to the campaign type
|
v
Success notification appears ("Create success!")
|
v
You are redirected back to the previous page
Troubleshooting
“I filled everything in but the Create button does not work”
Double-check that all required fields are filled. The form will not submit if anything is missing.
Look for small red error messages below the fields — they tell you exactly what is wrong.
Make sure you have uploaded a cover image. It is required.
Ensure you have selected at least one gym in the “Available in gyms” field.
“I get a ‘Valid to must be later than valid from’ error”
The “Can be purchased until” date must be after the “Can be purchased from” date.
Check both dates in the Pricing section and make sure they are in the correct order.
If you do not need an end date, clear the “Can be purchased until” field entirely.
“I do not see any contracts in the dropdown”
Contracts are loaded when the page opens. If the list is empty, try refreshing the page.
You must have at least one contract created in the system. Go to the Contracts section and create one first.
If the problem persists, check your internet connection or contact your administrator.
“I do not see any welcome email templates”
Only templates of type Welcome Email appear in this dropdown.
If the list is empty, go to the Email Templates section and create a welcome email template first.
Try refreshing the page if you recently created a template.
“I cannot toggle ‘Limit training hours’”
This feature is only available on Premium or Platinum subscription plans.
If you are on a lower plan, this toggle will not appear. Contact your account manager to upgrade.
“The price field shows an error even though I entered a number”
The price must be greater than 0. A value of 0.00 is not allowed.
Make sure you are entering only numbers and decimal separators (e.g. “29.99”).
Do not include currency symbols — the system adds those automatically.
“My cover image did not upload”
The image must be a JPEG, PNG, or GIF.
It must not exceed the maximum file size allowed by the system.
The image is cropped to a 4:3 aspect ratio. Make sure your image looks good at that ratio.
If the campaign was created but the image failed, edit the campaign and upload it again.
“I do not see any gyms to select”
You must have at least one gym/location set up in the system before creating a campaign type.
If you are new to the platform, set up a gym first under the Gym settings.
Your currently selected gym is pre-selected by default.
“I want to set both a fixed expiration date and a duration, but the fields disappear”
The form only allows one method of setting expiration at a time.
If you enter a fixed expiration date, the duration fields (months/days) are hidden, and vice versa.
Clear the field you do not need, and the other option will reappear.
“I got an error after clicking Create”
A red error message will appear. Read it carefully — it usually tells you what went wrong.
Common causes: missing required fields, duplicate name, server timeout, or network issues.
If the error is unclear, try again. If it keeps happening, contact support with the error message.
