Reference
Settings Reference
Retention and server settings, defaults, and backend field names.
This page maps user-facing settings to the backend fields Arcalotl stores and updates.
| Setting | Field | Default | Notes |
|---|
| Currency | currency | Server setup value | Used for plan creation defaults |
| Payment recovery enabled | dunning_enabled | true | Controls failed-payment recovery |
| Cancel saves enabled | cancel_flow_enabled | true | Controls cancellation save flows |
| Term optimization enabled | term_opt_enabled | true | Controls annual upgrade offers |
| Max dunning attempts | max_dunning_attempts | 4 | Legacy settings field |
| Dunning interval hours | dunning_interval_hours | 48 | Legacy settings field |
| Grace period days | grace_period_days | 7 | Legacy settings field |
| Setting | API field | Default | Notes |
|---|
| Enabled | enabled | true | Sends payment recovery reminders |
| Max attempts | max_attempts | 4 | Attempts are scheduled until the maximum is reached |
| Interval hours | interval_hours | 48 | Time between scheduled attempts |
| Grace period days | grace_period_days | 7 | Role access is removed after this period if unresolved |
| Setting | API field | Default | Notes |
|---|
| Enabled | enabled | true | Starts save flow after /cancel |
| Reason mapping | reason_mapping | See table below | Maps cancellation reasons to offers |
| Discount percent | discount_percent | 25 | Used for discount offers |
| Discount duration | discount_duration_months | 3 | Discount length in months |
| Pause length | pause_max_days | 30 | Used for pause offers |
| Downgrade plan | downgrade_plan_id | empty | Required before downgrade offers work |
| Tenure threshold | tenure_threshold_days | 14 | Applies to discount and downgrade offers |
| Repeat cooldown | repeat_offer_cooldown_days | 180 | Delay before another save offer can be shown |
Default reason mapping:
| Reason | Default offer |
|---|
too_expensive | discount |
not_using | pause |
missing_features | downgrade when a downgrade plan is configured |
switching | No offer |
other | No offer |
| Setting | API field | Default | Notes |
|---|
| Enabled | enabled | true | Sends annual upgrade offers |
| Minimum tenure | min_tenure_days | 90 | Active monthly subscription age before offer |
| Offer frequency | offer_frequency_days | 180 | Cooldown between offers for the same subscription |
| Post-dunning cooldown | post_dunning_cooldown_days | 30 | Wait after resolved payment recovery |
| Incentive discount | incentive_discount_percent | 0 | Stored field. The offer price still comes from the annual billing option |
These are configured through /retain settings in Discord.
| Setting | Backend field | Notes |
|---|
| Admin channel | admin_channel_id | Operational admin notifications |
| Announcement channel | announcement_channel_id | Public new-subscriber announcements |
| Subscribe channel | subscribe_channel_id | Persistent plan display message |
| Subscribe message | subscribe_message_id | Stored message ID for updates |