Field reference
Every field on every Marketing form: label in English and Arabic, type, whether it is required, its limits, a valid example and what the system refuses.
On this page (34)
Marketing DashboardCampaign formAd account formAd campaign formAd set formCreative formDelivery formDelivery > Import CSVAudience formAudience form > Rule keysAudience record > Add memberAudience recordRecord consentRule formAction > Create CRM taskAction > Assign lead ownerAction > Add tagAction > Set priorityAction > Notify salespersonAction > Send emailAction > Add to audienceAction > Send WhatsApp (Omnichannel)Journey builderJourney builder > WaitJourney builder > ConditionJourney builder > Branch (A/B)Test the journeyCampaign ROIMarketing Settings > AttributionMarketing Settings > ConsentMarketing Settings > AudiencesMarketing Settings > Send conversions toApplications > Marketing > FeaturesApplications > Marketing > Fields
Marketing Dashboard
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Period | الفترة | Select | Yes | Last 30 / 90 / 180 / 365 days; API accepts days 1-730 | Last 30 days | Last 90 days | API ?days=0 or 731 -> 422 validation error (FastAPI) |
Campaign form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Code | الرمز | Read-only | Auto | CMP-0001, CMP-0002 ... per company (count + 1, skips a code already used); max 30 | Next number | (auto) | |
| Campaign (name) | الحملة | Text | Yes | Column max 160; the server cuts text at 300 before saving (register label is English only in code) | Ramadan Offers 2026 | Empty -> 'Campaign is required.'; 200 characters -> on PostgreSQL a database error (not a friendly message) | |
| Objective | الهدف | Select | Yes | Awareness, Traffic, Engagement, Lead generation, Sales / conversions, App installs, Retention / loyalty | Lead generation | Empty -> 'Objective is required.'; a value not in the list (API) -> 'Choose one of the options.' | |
| Channels | القنوات | Multi-select | No | Facebook, Instagram, LinkedIn, TikTok, Snapchat, YouTube / Google, X / Twitter, WhatsApp, Email, Website, Other. Unknown values are silently dropped | Instagram, WhatsApp | API ['facebook','fax'] -> saved as ['facebook'] (no error) | |
| Start | البداية | Date | No | ISO date | 2026-10-05 | '2026-13-01' (API) -> 'Start is not valid.' | |
| End | النهاية | Date | No (field setting can make it Required / Hidden) | On or after Start. Field setting marketing.campaign.end_date | 2026-11-05 | End before Start -> 'The end cannot be before the start.' | |
| Budget | الميزانية | Money | No | Decimal, 2 places; negative amounts are NOT refused | 0 | 15000.00 | 'abc' -> 'Budget is not valid.'; -500 -> accepted today (log) |
| Currency | العملة | Text | No | Not listed; saved as the first 3 letters upper-cased; empty = AED; not checked against a currency list | AED | AED | 'usd' -> 'USD'; 'XYZ1' -> 'XYZ' (no error) |
| Owner | المسؤول | Select (company users) | No | Users with a membership in this company | A marketing user | ||
| Branch | الفرع | Select (branch dimension) | No | Branch dimension values of this company | Dubai branch | ||
| Status | الحالة | Select | Yes | Draft, Planned, Active, Paused, Completed, Cancelled - any status can be chosen directly (no lifecycle rules) | Draft | Empty -> 'Status is required.' | |
| utm_campaign | وسم UTM للحملة | Text | No (field setting) | Max 120. Empty = made from the name: lower-case, non-letters -> '_' (e.g. 'Ramadan Offers 2026' -> 'ramadan_offers_2026'). Used to match leads to this campaign | (from name) | ramadan26 | 130 characters -> database error on PostgreSQL (server cuts at 300, column is 120) |
| Target leads | العملاء المستهدفون | Whole number | No (field setting) | Integer | 0 | 250 | '12.5' -> 'Target leads is not valid.' |
| Target revenue | الإيراد المستهدف | Money | No | Decimal | 0 | 300000 | '1,000' -> 'Target revenue is not valid.' |
| Description | وصف الحملة | Long text | No (field setting) | Up to 20,000 characters | Ramadan offers on Instagram and WhatsApp, Dubai and Sharjah |
Ad account form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Platform | المنصة | Select | Yes | Facebook, Instagram, LinkedIn, TikTok, Snapchat, YouTube / Google, X / Twitter, Other (no WhatsApp / Email / Website) | Empty -> 'Platform is required.' | ||
| Name | الاسم | Text | Yes | Max 160 | Test Meta Ads Account | Empty -> 'Name is required.' | |
| Account id | معرف الحساب | Text | No | Max 120 (platform's ad account id, without act_) | 1234567890 (sandbox) | ||
| Currency | العملة | Text | No | Column max 3; NOT upper-cased or cut on ad accounts | AED | AED | 'AEDX' -> database error on PostgreSQL |
| Pixel / dataset / conversion id | معرف البكسل | Text | No | Max 120; needed before conversions can be sent | Test pixel id from the sandbox | ||
| Access token (stored sealed) | رمز الوصول | Secret | No | Sealed on save; never returned - the list returns blank and a 'has token' flag; leaving it blank on edit keeps the old token | Sandbox token only | Re-open the record: the token box is empty (correct) | |
| Status | الحالة | Select | Yes | Manual entry, Connected, Disconnected, Error. Choosing 'Connected' is what turns on real calls to the platform | Manual entry | Empty -> 'Status is required.' | |
| Branch | الفرع | Select | No | Branch dimension | (empty) | ||
| Last sync | آخر مزامنة | Read-only | - | Not set by any code path today | (empty) | ||
| Active | نشط | Tick box | No | New form starts ticked | Ticked | Ticked |
Ad campaign form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Ad campaign (name) | الحملة الإعلانية | Text | Yes | Max 160 | RMD26 - Instagram Leads | Empty -> 'Ad campaign is required.' | |
| Marketing campaign | الحملة التسويقية | Select | No | This company's campaigns (code + name) | CMP-0001 Ramadan Offers 2026 | ||
| Ad account | الحساب الإعلاني | Select | No | Ad accounts of this company; platform of the account is not compared with the Platform field | Test Meta Ads Account (facebook) | ||
| Platform | المنصة | Select | Yes | As ad accounts | Empty -> 'Platform is required.' | ||
| Objective | الهدف | Select | Yes | As campaign objectives | Lead generation | Empty -> 'Objective is required.' | |
| Lead campaign | حملة عملاء | Tick box | No | Ticked = shows under Lead Campaigns and as 'Lead form' chip in the campaign structure | Not ticked | Ticked | |
| Lead form | نموذج العملاء | Text | No | Max 160 | Ramadan enquiry form | ||
| Platform id | معرف المنصة | Text | No | Max 120 | (empty) | ||
| Daily budget | الميزانية اليومية | Money | No | Decimal; negatives not refused | 0 | 500 | 'x' -> 'Daily budget is not valid.' |
| Lifetime budget | الميزانية الإجمالية | Money | No | Decimal; not compared with the campaign budget | 0 | 10000 | 'x' -> 'Lifetime budget is not valid.' |
| Start / End | البداية / النهاية | Date | No | End before Start is NOT refused on ad campaigns (only on campaigns) | 2026-10-05 / 2026-10-30 | End 2026-10-01, Start 2026-10-05 -> saved today (log) | |
| Status | الحالة | Select | Yes | Draft, Active, Paused, Completed, Archived | Active | Empty -> 'Status is required.' |
Ad set form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Ad set (name) | المجموعة الإعلانية | Text | Yes | Max 160 | Dubai women 25-40 | Empty -> 'Ad set is required.' | |
| Ad campaign | الحملة الإعلانية | Select | Yes | Ad campaigns of this company | RMD26 - Instagram Leads | Empty -> 'Ad campaign is required.' | |
| Audience | الجمهور | Select | No | Audiences of this company | High value customers | ||
| Budget | الميزانية | Money | No | Decimal | 0 | 3000 | 'x' -> 'Budget is not valid.' |
| Targeting | الاستهداف | Long text | No | Free text, up to 20,000 | UAE, Dubai + Sharjah, 25-40, Arabic and English | ||
| Platform id | معرف المنصة | Text | No | Max 120 | (empty) | ||
| Status | الحالة | Select | Yes | Draft, Active, Paused, Completed, Archived | Active | Empty -> 'Status is required.' |
Creative form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Creative (name) | المادة الإعلانية | Text | Yes | Max 160 | Reel - Iftar offer 20% | Empty -> 'Creative is required.' | |
| Campaign | الحملة | Select | No | Campaigns of this company | CMP-0001 | ||
| Ad set | المجموعة الإعلانية | Select | No | Ad sets of this company. A creative without an ad set shows as a loose creative in the campaign structure | Dubai women 25-40 | ||
| Format | الصيغة | Select | Yes | Image, Video, Carousel, Story, Reel, Text, Lead form, Message / click-to-WhatsApp | Reel | Empty -> 'Format is required.' | |
| Headline | العنوان | Text | No | Max 300 | 20% off at Iftar | ||
| Primary text | النص الأساسي | Long text | No | Up to 20,000 | Order before 6 pm for delivery in Dubai | ||
| Call to action | الدعوة لاتخاذ إجراء | Text | No | Column max 60, server cuts at 300 | Send WhatsApp message | 70 characters -> database error on PostgreSQL | |
| Media URL / Landing page | رابط الوسائط / صفحة الهبوط | Text | No | Column max 500 but the server silently cuts at 300; not checked as a URL | https://example.test/ramadan?utm_source=instagram | A 400-character URL -> saved cut to 300 without a message (log) | |
| utm_content | وسم UTM للمحتوى | Text | No | Max 120 | reel_iftar | ||
| Status | الحالة | Select | Yes | Draft, Active, Paused, Completed, Archived | Draft | Empty -> 'Status is required.' |
Delivery form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Date | التاريخ | Date | Yes | One row per day per item (company, day, level, item) | 2026-10-06 | Empty -> 'Date is required.'; same day + item again -> 'That day is already entered for this item - edit it instead.' | |
| Campaign | الحملة | Select | Yes | Campaigns of this company | CMP-0001 | Empty -> 'Campaign is required.' | |
| Level | المستوى | Select | Yes | Campaign, Ad campaign, Ad set, Creative. ROI uses only the most summary level entered for a campaign (campaign first), so nothing is counted twice | Campaign | Empty -> 'Level is required.' | |
| Ad campaign / ad set / creative | العنصر | Select | No | Ignored when Level = Campaign (set to the campaign). Not checked to belong to the chosen campaign | (empty for Campaign level) | ||
| Platform | المنصة | Select | No | Ad platforms | |||
| Spend | الإنفاق | Money | Yes | Decimal; negative not refused | 450.75 | Empty -> 'Spend is required.'; 'abc' -> 'Spend is not valid.' | |
| Impressions / Reach / Clicks / Platform leads | مرات الظهور / الوصول / النقرات / عملاء المنصة | Whole numbers | No | Integers | 0 | 12000 / 9000 / 340 / 12 | '1.5' -> 'Impressions is not valid.' (etc.) |
| Source | المصدر | Select | No | Manual, Import, Platform API | Manual | Manual |
Delivery > Import CSV
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| CSV file | ملف CSV | File (.csv) | Yes | Header row: date, campaign, spend, impressions, reach, clicks, platform_leads, platform. 'campaign' = campaign code or utm_campaign. Campaign level only. Max 5,000 rows read. Existing day = updated. Commas inside quotes are NOT supported by the screen's parser | date,campaign,spend,impressions,clicks\n2026-10-06,CMP-0001,450,12000,340 | Unknown campaign -> 'Row 2: no campaign 'XYZ''; bad date -> 'Row 3: the date is not valid'; 'abc' spend -> 'Row 4: a number is not valid' |
Audience form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Audience (name) | الجمهور | Text | Yes | Max 160 (register label English only) | High value customers Dubai | Empty -> 'Audience is required.' | |
| Type | النوع | Select | Yes | Dynamic (rule) - rebuilt from the rule every time; Static list - keeps people added by hand | Dynamic (rule) | Empty -> 'Type is required.' | |
| Purpose | الغرض | Select | Yes | Marketing, Newsletter, Promotions / offers, Transactional / service, Support, Profiling / ads. Transactional and Support are always 'reachable' (service messages) | Marketing | Empty -> 'Purpose is required.' | |
| Members / Reachable / Status | الأعضاء / القابلون للوصول / الحالة | Read-only | - | Counted on save and on Rebuild; status 'ready' after a build | (auto) | ||
| Rule | القاعدة | JSON | No | An object. Empty = {"base": "customers", "channel": "whatsapp"}. base: customers | leads | inactive_customers | high_value | by_product | by_industry | by_location | abandoned_quotations | repeat_customers | static. channel = the consent channel counted for Reachable. An unknown base gives 0 members, no error | {"base":"customers","channel":"whatsapp"} | {"base":"high_value","min_value":20000,"channel":"whatsapp"} | '{base:' -> 'That is not valid JSON.' (screen); '[1,2]' (API) -> 'Give an object.' |
| Description | الوصف | Long text | No | Up to 20,000 | Customers who spent 20k+ AED |
Audience form > Rule keys
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Extra rule keys | مفاتيح القاعدة | JSON keys | No | leads: tag, source, country (open, not archived, not 'do not contact'). inactive_customers: days (default setting, 90). high_value: min_value (default setting 50,000). repeat_customers: min_orders (2). by_product: product_id. by_industry: industry. by_location: country, city. abandoned_quotations: days (14; draft sales between days and days x 6 old). Any base: market | {"base":"leads","source":"Instagram Lead Ads","country":"AE"} |
Audience record > Add member
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| name / email / phone | الاسم / البريد / الهاتف | Text | One of phone or email | Labels shown as raw keys 'name', 'email', 'phone' in both languages. Key = phone digits (leading zeros dropped) or lower-case email | Test Person / test1@example.test / +971501234567 | All empty -> 'Give a contact, a phone number or an email.' |
Audience record
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Platform (sync) | المنصة | Select | Yes | facebook, instagram, linkedin, tiktok, snapchat, youtube. Needs an ACTIVE ad account on that platform. Real upload only for Facebook/Instagram with status Connected | No ad account -> 'Connect an ad account on that platform first (Campaigns > Ad Accounts).' |
Record consent
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| name / phone / email | الاسم / الهاتف / البريد | Text | One of phone, email or contact | Labels shown as raw keys. Phone stored as digits only with leading zeros dropped; email lower-cased (format not checked). Name max 160 | Test Person / +971501234567 / test1@example.test | All empty -> 'Say who: a contact, a phone number or an email.' | |
| source | المصدر | Text | No | Max 120 (raw key label) | Dubai mall stand form | ||
| Channel | القناة | Select | Yes | WhatsApp, Email, SMS, Instagram, Facebook / Messenger, Telegram, Phone call, LinkedIn, TikTok, Snapchat, Website, Any channel. 'Any channel' applies to every channel | API 'fax' -> 'Choose the channel.' | ||
| Purpose | الغرض | Select | Yes | Marketing, Newsletter, Promotions / offers, Transactional / service, Support, Profiling / ads | Marketing | Marketing | API 'spam' -> 'Choose the purpose.' |
| Status | الحالة | Select | Yes | Opted in, Opted out, Unknown (Expired is hidden on the form but accepted by the API) | Opted in | Opted in | API 'maybe' -> 'Choose the status.' |
| Consent type | نوع الموافقة | Select | No | Explicit, Double opt-in, Verbal / call, Contract / terms, Implied (existing customer), Legitimate interest. API value not checked against the list (column 24) | Explicit | Explicit (form / message) | API 'anything' -> saved as-is (log) |
| Evidence | الدليل | Long text | No | Max 5,000 (history keeps 2,000) | Ticked the WhatsApp offers box on the stand form, 6 Oct 2026 14:10 Dubai | ||
| Expires (calculated) | الانتهاء | Read-only | - | Opted in: expires = now + 30 x 'Consent expires after (months)' days (24 months default = 720 days); 0 = never. Opted out: opt-out date set | (auto) |
Rule form
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Name | الاسم | Text | Yes | Max 160 (trimmed) | WhatsApp price enquiry -> lead | Empty -> 'Name the rule.' | |
| When (trigger) | عندما | Select | Yes | Lead created, Lead qualified, Opportunity created, Message received, New conversation, Form / lead ad submitted, Comment received, Quotation created, Order confirmed, Invoice posted, Invoice due, Invoice overdue, Payment received, Customer inactive, Consent opted out, Started by hand | Message received | Lead created | API 'birthday' -> 'Choose the trigger.' |
| Conditions must | يجب أن تتحقق | Select | Yes | all match / any match; anything else saved as 'all' | all match | all match | |
| Order | الترتيب | Number | No | Rules run lowest first; empty/0 = 10 | 10 | 5 | API 'abc' -> server error (int() not caught) - log |
| Conditions (Field / Operator / Value) | الشروط | Rows | No | Fields: Channel, Message text, Contact type, Lead status, Source, Campaign, Country, Language, Value / amount, Tags, Priority, Product, Platform, Days overdue, Days inactive, VIP, Customer replied since the wait, Team, Within business hours. Operators: =, ≠, contains, does not contain, is one of, >, <, is set, is not set. Value max 300; 'contains' takes a|b alternatives; 'is one of' takes a,b | Message text contains price|سعر | Field empty (API) -> 'Choose a field for every condition.'; bad operator -> 'Choose an operator for every condition.' | |
| THEN (actions) | إذن | Rows | Yes (1+) | Create CRM task, Assign lead owner, Add tag, Set priority, Notify salesperson, Send email, Add to audience, and Omnichannel actions (Create lead from conversation, Assign conversation to team / person, Set conversation priority, Send WhatsApp, Send reply, Tag the conversation, Create support ticket, Set conversation label) | Create lead from conversation | Add tag 'ramadan' | No actions -> 'Add at least one action.'; unknown type (API) -> 'Choose what every action does.' |
| Stop other rules after this one | إيقاف القواعد الأخرى | Tick box | No | When this rule matches, later rules for the same event are not run (journeys still start) | Not ticked | Ticked |
Action > Create CRM task
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Subject / Due in (days) / Type | الموضوع / بعد (أيام) / النوع | Text / number / select | No | Subject max 180 (default 'Follow up'); due = server date + days; Type call/email/meeting/task. Skipped if the lead has no owner | Call about Ramadan offer / 1 / Call | Lead without owner -> log 'skipped: no record or nobody to give the task to' |
Action > Assign lead owner
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Person | الشخص | Select (users) | No | Empty = round robin over reps/managers of the lead's team; person must be a member of this company | Sales user | Team without reps -> 'skipped: nobody on that team' |
Action > Add tag
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Tag | الوسم | Text | Yes | Max 40; a lead keeps at most 20 tags | ramadan26 | Empty -> log 'skipped: no lead or no tag' |
Action > Set priority
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Priority | الأولوية | Select | No | Low, Normal, High, Urgent; empty = High | High |
Action > Notify salesperson
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Notification | الإشعار | Text | No | Max 160; default 'Automation: follow up'; goes to the lead owner | New Ramadan lead - call within 1 hour |
Action > Send email
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Subject / Body (HTML) | الموضوع / النص | Text / long text | No | Sent through Administration > Email account; consent for channel Email checked first; kept on the record timeline | Your Ramadan offer / <p>Hello</p> | No consent -> log 'skipped: No consent recorded'; no mail account -> 'skipped: set up email sending for this company first' |
Action > Add to audience
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Audience | الجمهور | Select | Yes | Audiences of this company | Ramadan responders | Empty -> log 'skipped: no such audience' |
Action > Send WhatsApp (Omnichannel)
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Template / variables / Free text | القالب / المتغيرات / نص حر | Select / text | Template or text | Only approved templates listed; variables comma separated ({name}); free text only inside the 24 h window. Needs Omnichannel + WhatsApp sandbox number | ramadan_welcome / {name} |
Journey builder
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Journey name | اسم الرحلة | Text | Yes | Max 160 | Instagram lead welcome | Empty -> 'Name the journey.' | |
| Trigger step | المشغل | Select + conditions | Yes | Same trigger list as rules; trigger filter conditions always 'all match'. Exactly one trigger step | Lead created | Lead created, Source contains Instagram | API with 2 trigger steps -> 'A journey starts with exactly one trigger.' |
| Allow re-entry | السماح بإعادة الدخول | Tick box | No | Off: the same lead/contact runs the journey only once ever | Off | Off | |
| Step label | تسمية الخطوة | Text | No | Max 160 | Welcome message |
Journey builder > Wait
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| days / hours / minutes; or until the customer replies | انتظار | Numbers + tick | No | Total minutes (minimum 1). The clock checks every minute. 'until reply' wakes early when a message arrives (Omnichannel) | 1 day | 0 / 0 / 2 | -5 minutes -> treated as 1 minute |
Journey builder > Condition
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Conditions | شرط | Rows | No | As rule conditions; Yes path = match, No path = else | Customer replied since the wait is set |
Journey builder > Branch (A/B)
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| A % | تفرع | Number | No | Screen 1-99, B = 100 - A; server does not check the range | 50 | 70 | API 150 -> every run goes A (log) |
Test the journey
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| name / phone / email / deal_id / partner_id | اختبار الرحلة | Text | No | Raw key labels. Empty deal/partner = a made-up subject 'test-<time>'. The trigger filter is NOT applied; re-entry forced on | name 'Test Person' | deal_id of a test lead | API with no deal/partner/subject -> 'Choose a lead or a contact to run it for.' |
Campaign ROI
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| From / To | من / إلى | Date | No | Filters delivery by day and leads by their attribution date (UTC); empty = all time | 2026-10-01 / 2026-10-31 | API ?start=abc -> server error (date not checked, analytics.py:20) - log |
Marketing Settings > Attribution
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Model | النموذج | Select | Yes | First touch, Last touch, Linear (split evenly over the lead's touches) | Last touch | Linear (split evenly) | API 'u_shaped' -> 'Choose an attribution model.' |
| Attribution window (days) | نافذة الإسناد (أيام) | Whole number | Yes | 0-3650. For a lead without a CRM-linked quotation, the partner's sales up to this many days after the lead count; 0 = 180 | 180 | 90 | 4000 -> 'Between 0 and 3650.'; 'abc' -> 'Give a whole number.' |
| Reporting currency | عملة التقارير | Text | No | First 3 letters upper-cased; empty = AED; not checked against a list. Conversion events carry it | Company currency (AED) | AED | 'dirham' -> saved as 'DIR' (no error) - log |
Marketing Settings > Consent
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Consent expires after (months, 0 = never) | تنتهي الموافقة بعد (أشهر) | Whole number | Yes | 0-3650; applied to opt-ins recorded after the change (30 days per month) | 24 | 12 | -1 -> 'Between 0 and 3650.' |
| Double opt-in | تأكيد مزدوج | Tick box | No | Stored only - no effect today | Off | Off | |
| Treat unknown consent as allowed (not recommended) | اعتبار الموافقة غير المعروفة مسموحة | Tick box | No | On: a person with no consent record may receive marketing ('Unknown - allowed by company setting') | Off | Off |
Marketing Settings > Audiences
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Inactive after (days) | غير نشط بعد (أيام) | Whole number | Yes | 0-3650; used by the inactive_customers base and the daily 'Customer inactive' trigger (0 = trigger off) | 90 | 60 | 'x' -> 'Give a whole number.' |
| High value from | قيمة عالية من | Amount | No | Total posted invoice net per customer for the high_value base; negative not refused | 50000.00 | 20000 | 'abc' -> 'Give an amount.' |
Marketing Settings > Send conversions to
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| facebook / instagram / linkedin / tiktok / snapchat / youtube | إرسال التحويلات إلى | Tick boxes | No | Ticked = conversion events of leads attributed to that platform are dispatched (needs an active ad account with a pixel id). YouTube has no sender in code (always 'failed') | All off | facebook ticked |
Applications > Marketing > Features
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Automation and journeys | الأتمتة ورحلات العملاء | Switch | - | Off: POST/PUT/PATCH/DELETE under marketing/automation(s) and marketing/journeys refused; menus Automation group and Rules hidden; existing records stay readable | On | Off then On | Save a rule while off -> 409 'Automation and journeys is disabled for this company.' |
| Attribution, conversions and ROI | الإسناد والتحويلات والعائد | Switch | - | Off: changes under marketing/attribution, marketing/conversions, marketing/roi refused (only 'Scan ERP events now' is a change); no menus listed | On | Off | Scan ERP events now while off -> 409 'Attribution, conversions and ROI is disabled for this company.' |
| Campaigns and audiences / Consent registers | الحملات والجماهير / سجلات الموافقة | Always on | - | Core - cannot be switched off; Consent is protected | On | (no switch shown) |
Applications > Marketing > Fields
| Field | Arabic label | Type | Required | Rules and limits | Default | Example | Refused when |
|---|---|---|---|---|---|---|---|
| Campaign description / end date / UTM campaign tag / Target leads | وصف الحملة / تاريخ الانتهاء / وسم UTM / العملاء المستهدفون | Field rule | - | Hidden: not shown on the campaign form (unless it already holds a value) and a value sent on a NEW campaign is refused. Required: campaign not saved without it | Shown | End date = Required | Required end date, Save without it -> refused with a field message on End |