> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Smart tagging

> Rule-based tags that 1Club applies to members automatically, segmenting them by payments, lifecycle, membership expiry, attendance, loyalty, age, household role, language, and the sports they book.

Smart tagging applies tags to your contacts automatically based on rules you configure once. The engine looks at how a member pays, how long they've been with you, when their membership expires, how often they check in, how active they've been overall, their age, their household role, their preferred language, and which sports they book. From then on 1Club keeps every contact's tags in sync, so staff can filter and target members without curating lists by hand. Smart tags sit next to manual tags everywhere they're used - member lists, [promotion segments](/sales/promotions), and messaging - but you can't add or remove a smart tag on an individual profile; you change the rule instead.

## When to use it

Use smart tags when you want segments that maintain themselves - who is overdue, whose membership is about to expire, who plays padel - and then act on them with promotions, automations, and reports.

Typical uses:

* **Marketing by sport** - a padel and tennis gym tags members who book a sport regularly and targets a padel-night promotion at the padel tag only.
* **Chasing renewals** - a gym pairs the **Expiring Soon** tag with a renewal discount.
* **Recovering payments** - a Pilates studio builds an automation that messages members tagged **Overdue**.
* **Age and family messaging** - a martial-arts school tags kids and juniors automatically, and tags parents from household accounts so it can message them about their children.

See [Worked examples](#worked-examples) for the categories and settings behind each of these.

## How it differs from manual tags

You can attach two kinds of tags to a contact:

| | Manual tags | Smart tags |
| - | - | - |
| **Where they come from** | You create them and apply them to specific contacts | 1Club applies them automatically based on rules |
| **Who controls membership** | You add or remove them per contact | The engine, based on the contact's current data |
| **Configured in** | **Settings** > **Members** > **Manual Tags**, or any tag chip on a contact | **Settings** > **Members** > **Smart Tags** |
| **Editable per contact** | Yes | No - change the rule, not the tag on the contact |
| **Examples** | "VIP", "Family of John", "Yoga teacher" | "Regular", "Overdue", "Expiring soon", "Adult" |

Both types behave identically when you filter or segment. A promotion that targets "Overdue" works the same whether that tag is manual or smart.

## Who gets smart tags

The engine treats contacts differently depending on what they are:

* **Members** (contacts with bookings or memberships) are eligible for every enabled category.
* **Leads** (contacts with no activity yet) only receive the demographic and lifecycle-of-contact categories: **Age**, **Contact stages**, **Relationship**, and **Language**. The activity-based categories (Attendance, Financial, Lifecycle, Loyalty, Membership, Interest, Progression, Assessment) don't apply until the lead becomes a member.
* **Staff** (instructors, managers, admins) never receive smart tags. Any auto-tag they picked up before becoming staff is stripped on the next evaluation; their manual tags are kept.
* **Archived contacts** are frozen - their tags stay as a snapshot and are not recomputed.

## Categories

Each category has an **Enable this tag category** switch. Within a category, a contact gets at most one tag - the highest matching tier - except **Interest** (one tag per qualifying sport) and **Relationship** (a contact can be both Parent and Child). Disable a category and every tag it produced is removed on the next sync.

The categories below are listed in the order they appear on the page. Four are enabled out of the box: **Financial**, **Lifecycle**, **Membership**, and **Contact stages**.

### Financial (enabled by default)

Flags members with unpaid or overdue payments. Each tier defines the minimum number of days a payment can be overdue before the tag applies.

Defaults:

* **Unpaid** - owes money, but nothing is past due yet (at least one pending, failed, or overdue charge dated today or later).
* **Past Due** - a payment is 1+ day overdue.
* **Overdue** - a payment is 7+ days overdue.

The field is labelled **Min Days Overdue**. The **Unpaid** tier is fixed and can't be deleted; you can add, rename, recolour, or remove the past-due tiers.

### Lifecycle (enabled by default)

Tracks how long a member has been with you, counted from the start date of their first membership. Requires an **active** membership, so a lapsed member drops out of the category.

Defaults: **Trial** (day 1+), **Probation** (day 15+), **Active** (day 46+). The field is labelled **Min Days Since First Membership**.

### Membership (enabled by default)

Monitors where a member sits relative to their membership expiry date. A **positive** value means days *before* expiry; a **negative** value means days *after*.

Defaults: **Expiring** (7 days before), **Expiring Soon** (3 days before), **Expired** (7 days after).

Two behaviours worth knowing:

* **Before-expiry** tiers only match memberships that are active and **not auto-renewing**. An auto-renewing membership is never flagged as expiring, because it isn't going to lapse.
* **After-expiry** tiers only apply when the member has **no** active membership at all.

### Loyalty (disabled by default)

Ranks members by total lifetime activity (bookings + check-ins). Use it for tenure-style recognition, in contrast to Attendance, which measures recent engagement.

Defaults: **Legend** (50+), **Champion** (25+), **Pro** (10+), **Rising Star** (5+), **Beginner** (fewer than 5). The field is labelled **Minimum Activity**.

### Attendance (disabled by default)

Groups members by how often they check in over a recent window. Each tier defines a **Minimum Visits** count and a **Period (Days)**.

Defaults: **All-Star** (16+ visits / 30 days), **Regular** (8+), **Casual** (4+), **Low Activity** (1+), **Inactive** (0 in the period). Thresholds and periods are fully editable.

### Age (disabled by default)

Tags members by age group from their date of birth. Each tier has a **Min Age** and **Max Age**.

Defaults: **Infant** (0-4), **Kid** (5-12), **Junior** (13-17), **Adult** (18-64), **Senior** (65+). Edit the bounds to match how you market and price. These defaults are the same age bands a [class type's](/settings/class-types#age-group-and-difficulty) age group uses, so a Kids class and the Kid tag start out meaning the same ages. Editing a tag's bounds changes only the tag.

### Contact stages (enabled by default)

Tags contacts by how recently they were added - useful for spotting fresh leads. The field is **Max Days Since Created**.

Default: **New** (within 14 days).

### Relationship (disabled by default)

Tags members by their household role. Household owners and adults are tagged as parents; dependents are tagged as children.

This category has two fixed tags - **Parent** and **Child**. You can only edit their display name and colour; there are no thresholds and you can't add or remove tiers. A contact can carry **both** if, for example, they're an adult in one household and a dependent in another. It applies to leads as well as members.

### Language (disabled by default)

Tags members by their preferred language, taken from their linked account profile. There's one fixed tag per supported locale: **English**, **Español**, **Français**, **Deutsch**, **Български**, **Čeština**. As with Relationship, you can only edit the display name and colour - not the locale mapping - and you can't add or remove rows.

A contact with no linked user account (a walk-in or lead who never registered) has no known language and receives no language tag.

### Interest (disabled by default)

Sport-by-sport tags applied to members who've booked the same sport at least N times. Tags are generated dynamically, one per sport that crosses the threshold, so a member can hold several interest tags at once. The field is **Minimum Bookings per Sport** (default 3). Use these to target audiences with offers relevant to what they already do - for example, a padel-only promotion for members tagged with the padel interest.

### Progression (disabled by default)

Tags members by their levels on your [progression tracks](/settings/progression). The four tags are fixed: you can edit each one's name, colour and threshold, but you can't add or remove rows. A member who holds several tracks gets a tag if any of their tracks qualifies, and can carry more than one.

* **Eligible for Promotion** - has the sessions the next level requires (see [Sessions to the next level](/settings/progression#sessions-to-the-next-level)).
* **Close to Promotion** - not eligible yet, but has reached a share of the sessions needed (default 80%).
* **Stalled at Rank** - holds a level but hasn't attended a session in the last N days (default 30). The check runs per track, counting only the sessions that count toward that track, so a member training only in classes linked to another track is stalled on this one.
* **Recently Promoted** - was promoted in the last N days (default 14). A member's first level, a stripe or a correction never counts as a promotion.

### Assessment (disabled by default)

Tags members by their [assessments](/members/assessments). The three tags are fixed, like Progression.

* **Not Assessed Recently** - attended at least one session in the last N days (default 30) but has no assessment in that time. Members who stopped coming aren't flagged.
* **Top Performer** - the average of their last 3 assessments is at least a share of the scale (default 80%).
* **Needs Attention** - the average of their last 3 assessments is at most a share of the scale (default 50%).

The average takes every score on those assessments as a share of its template's scale - the same measure as the average on the member's profile.

### Engagement scoring (disabled by default)

Sitting at the bottom of the same page, engagement scoring is a related feature rather than a tag category. When enabled, it computes a member engagement score from four weighted inputs - **Financial**, **Services**, **Physical**, and **Engagement** - whose weights must sum to 100%. The score surfaces on the [member engagement](/analytics/marketing) view; it doesn't create tags.

## Configuring rules

1. Go to **Settings** > **Members** > **Smart Tags**. (The **Manual Tags** tab next to it manages plain manual tags; see [Manual tags](#manual-tags).)
2. For each category:
   * Toggle **Enable this tag category** on or off.
   * Edit a tier - adjust the threshold (visits, days, age range, and so on) and rename or recolour the tag.
   * Add a tier with **Add tag** (not available for Relationship, Language, Interest, Progression, or Assessment, whose rows are fixed or derived).
   * Delete a tier you don't need (the fixed Unpaid, Parent/Child, language, progression, and assessment rows can't be deleted).
3. Save with the floating save alert at the bottom of the page.

Tag names must be unique within a category, and the dialog validates thresholds (for example, minimum visits can't be negative and overdue days must be at least 1).

After you save, 1Club syncs the tag registry (renames, new tiers, deletions) and re-evaluates affected contacts. To see a big change take effect immediately, use **Sync tags** (below).

## How and when tags are kept in sync

Smart tags are recomputed:

* **Reactively**, on the events that could shift a tag - when a contact is created, a membership is created or cancelled, a payment succeeds or fails, a booking is created, cancelled, marked no-show, or checked in, a member is promoted or a level is corrected or removed, an assessment is added, edited or removed, or a member has a birthday. The affected contact is re-evaluated right away.
* **Nightly**, as a backstop, for every contact in the organization (runs at 03:00 UTC). This is what catches purely time-based transitions - a membership crossing its expiry window, a lead ageing past "New", a household-role change.
* **On demand**, via the **Sync tags** button on the Smart tagging page. It re-evaluates everyone and reports how many members were updated.

Re-evaluation only touches tags the engine manages. Manual tags are never removed by a sync.

## Where smart tags show up

Smart tags behave exactly like manual tags wherever tags are consumed:

* **Member lists** - filter the list by tag; a tag chip tells you whether it's manual or smart.
* **Contact profile** - both kinds appear in the same Tags section.
* **[Promotion segments](/sales/promotions)** - restrict a voucher or discount to contacts carrying specific tags.
* **Automations** - use tags in entry conditions to control which contacts a workflow runs for.
* **Reports and analytics** - break KPIs down by tag to compare cohorts (for example, revenue from "Regular" vs. "Overdue").

Because smart-tag membership is recomputed continuously, these segments stay current without anyone curating lists.

## Editing tags on a contact

You **cannot** add or remove a smart tag on a single contact from their profile. A smart tag is the output of a rule, so the engine would just put it back (or take it off) on the next evaluation. To change who has a tag:

* **Change the rule** under **Settings** > **Members** > **Smart Tags** (this affects every contact).
* Or, to flag one person, use a **manual tag** instead - manual tags can be added and removed per contact at any time.

## Manual tags

Manual tags are the ones you apply by hand. Manage the list under **Settings** > **Members** > **Manual Tags**: click **Add Tag**, enter a **Tag Name**, and optionally pick a **Color**. Click a tag to edit it. Deleting a tag removes it from every member who has it.

You add and remove manual tags on a single contact from the tag chips on their profile.

## Renaming or disabling categories

* **Renaming a tier** updates the tag name across every contact that has it.
* **Disabling a category** removes every tag in that category from every contact on the next sync.
* **Re-enabling a category** re-applies its tags on the next sync.
* **Deleting a tier** removes it from contacts that currently have it (next sync) and leaves the rest of the category intact.

Promotion and automation filters that referenced a disabled or deleted tag simply stop matching anyone - they don't break.

## Worked examples

### Racket-sports club: fill courts and chase renewals

A padel and tennis club wants to market by sport and keep courts busy.

* Enable **Interest** (Minimum Bookings per Sport = 3) so regulars pick up padel and tennis interest tags. Target a padel-night promotion at the padel tag only.
* Enable **Attendance** to separate court regulars ("Regular", "All-Star") from members who are slipping ("Low Activity", "Inactive").
* Keep **Membership** on and pair the "Expiring Soon" tag with a renewal discount.

### Martial-arts school with a kids' programme

A jiu-jitsu and muay-thai academy runs junior classes and family memberships.

* Enable **Age** so juniors (13-17) and kids (5-12) are tagged automatically for age-appropriate class messaging.
* Enable **Relationship** to tag **Parent** and **Child** from household accounts, so you can message parents about their dependents' progress.
* Enable **Progression** to see who is **Eligible for Promotion** before a grading, and to reach members who are **Close to Promotion** or **Stalled at Rank** with a nudge to keep training.
* Enable **Assessment** so coaches see who is **Not Assessed Recently**, and so parents of a **Top Performer** can be congratulated automatically.

### Pilates/yoga studio: recover payments and reward loyalty

* Leave **Financial** on and build an automation that messages the "Overdue" segment before it becomes "Overdue" at 7 days.
* Enable **Loyalty** to recognise long-standing members ("Legend", "Champion") with perks.

### Multi-language community gym

Enable **Language** so members are tagged by their preferred locale (for example Español or Français), then send each promotion in the right language by segmenting on the language tag.

## Tips & best practices

* **Start with the defaults.** Financial, Lifecycle, Membership, and Contact stages are on out of the box because almost every club needs them. Add Attendance, Loyalty, Interest, and the demographic categories as you're ready to act on them.
* **Use Attendance for short-term campaigns and Loyalty for long-term recognition.** They answer different questions: "who's gone quiet recently?" vs. "who's been with us the longest?"
* **Don't duplicate categories with manual tags.** If you find yourself hand-tagging members "Overdue", adjust the Financial thresholds instead.
* **Remember auto-renewing memberships never show "Expiring".** If you rely on the Membership tags for renewals, they target non-auto-renewing plans.
* **Re-check thresholds periodically.** What counted as "Regular" attendance a year ago may not match how your club runs today.

## Troubleshooting

**Issue**: A member isn't getting an activity tag (Attendance, Financial, Loyalty, and so on).
**Cause / fix**: The contact is still a lead with no bookings or memberships, so only demographic categories apply - or the category is disabled. Confirm they have activity and the category is on.

**Issue**: A member has no Language tag.
**Cause / fix**: The tag comes from a linked account's preferred language. A contact with no linked user account (a walk-in or unregistered lead) can't be tagged. Also confirm the Language category is enabled.

**Issue**: A member isn't tagged "Expiring" even though their membership ends soon.
**Cause / fix**: Auto-renewing memberships are never flagged as expiring. The before-expiry tiers only match active, non-auto-renewing memberships whose end date falls inside the window.

**Issue**: A staff member has no smart tags.
**Cause / fix**: That's by design - staff are excluded from smart tagging entirely.

**Issue**: I changed a threshold but tags didn't update.
**Cause / fix**: Reactive re-evaluation fires on data changes, not rule changes. After a rule change, click **Sync tags** to apply it now, or wait for the nightly run at 03:00 UTC.

## Related

* [Members](/members/overview) - where tags are surfaced and used.
* [Promotions](/sales/promotions) - restrict offers to specific tags via segment filters.
* [Marketing analytics](/analytics/marketing) - break down performance by member segment and view engagement scores.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.