Trackily Docs

Automizer scopé à une campagne

Une règle Automizer peut être globale (toutes les campagnes) ou scopée à UNE campagne (automation_rules.campaign_id). Le scope par campagne est ce qui te permet de faire des kill-switches précis sans casser le reste du compte.

Automizer — règle

Concept

Le moteur Automizer tourne en background toutes les 60 secondes : il évalue chaque règle active, vérifie si SES conditions matchent les stats de la fenêtre temporelle indiquée, et si OUI déclenche les actions associées (pause campagne, change budget, etc.).

Deux scopes possibles :

  • Global (campaign_id: null) : la règle s'applique à TOUTES les campagnes — pratique pour des règles transverses (ex : "pause tout ce qui a un bot_rate > 80 %").
  • Scopée campagne (campaign_id: 42) : la règle ne regarde QUE les stats de la campagne 42 — pratique pour les kill switches ciblés et les règles A/B test.

Sur Trackily, l'usage 70/30 penche vers le scopé : tu veux contrôler tes campagnes une par une avec des seuils personnalisés (le seuil acceptable de coût pour MemoMind est différent de celui d'une campagne crypto).

Comment faire — via MCP

Tool : create_automizer_rule (scope automizer:write, Tier-2 — confirm_token requis).

Étape 1 — Preview

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Kill MemoMind FR si CPA > $40",
    "campaign_id": 8,
    "conditions": [
      { "metric": "cost",        "operator": ">",  "value": 40, "window": "24h" },
      { "metric": "conversions", "operator": "<",  "value": 1,  "window": "24h" }
    ],
    "actions": [
      { "type": "pause_campaign" }
    ],
    "check_interval_minutes": 15,
    "is_active": true
  }
}

Réponse :

{
  "status": "preview",
  "summary": "Create Automizer rule \"Kill MemoMind FR si CPA > $40\" — checked every 15 min, active on save, scoped to campaign #8.",
  "preview": { "name": "...", "conditions": [...], "actions": [...], "warnings": [] },
  "token": "ctok_..."
}

Étape 2 — Confirm

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Kill MemoMind FR si CPA > $40",
    "campaign_id": 8,
    "conditions": [...],
    "actions": [...],
    "check_interval_minutes": 15,
    "is_active": true,
    "confirm_token": "ctok_..."
  }
}

La règle est insérée dans automation_rules, démarrera au prochain tick du scheduler (≤60 s).

Voir code source : autopilot-actions.js:670 (toolCreateAutomizerRule) et autopilot-actions.js:1044 (registration).

Logique AND

TOUTES les conditions doivent matcher pour que les actions se déclenchent (logique AND implicite). Pas de mode OR dans Trackily — si tu veux OR, fais 2 règles séparées.

Exemple : cost > 40 AND conversions < 1 ne pause que si AUCUNE conversion en 24h ET le coût a dépassé $40. Si tu fais 1 conversion à $35 puis 0 jusqu'à $50, la règle déclenche au moment où cost > 40 AND conversions = 1 devient cost > 40 AND conversions < 1… qui n'arrive jamais (conversions ne descend pas). Adapte les seuils.

Métriques engine reconnues

  • clicks — total clicks dans la fenêtre.
  • conversions — total conversions dans la fenêtre.
  • revenue — revenu cumulé.
  • cost — coût cumulé.
  • profit — revenu - coût.
  • roi — (revenu - coût) / coût.
  • cr — conversion rate (%).
  • epc — earnings per click.
  • bot_rate — % de clics filtrés bots.

Fenêtres : 1h, 6h, 24h, 7d. (Le moteur accepte aussi 3h, 12h — voir automizer/conditions.)

Actions

  • pause_campaignis_active=false sur la campagne. Trafic stoppé immédiatement.
  • resume_campaign — inverse de la précédente.
  • change_budget — pour les sources qui supportent l'API budget (Meta, TikTok, Google) :
    { "type": "change_budget", "amount": -20, "unit": "pct" }
    
  • pause_landing / resume_landing.
  • pause_offer / resume_offer.
  • notify_email — envoie un email avec le résumé.
  • notify_webhook — fire un webhook avec le payload.

Voir automizer/rules pour la liste complète.

Exemples

Kill switch — pause si trop dépensé sans conversion

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Kill — MemoMind FR — 24h sans conv",
    "campaign_id": 8,
    "conditions": [
      { "metric": "cost",        "operator": ">=", "value": 50, "window": "24h" },
      { "metric": "conversions", "operator": "=",  "value": 0,  "window": "24h" }
    ],
    "actions": [{ "type": "pause_campaign" }],
    "check_interval_minutes": 30,
    "is_active": true
  }
}

Bot filter aggressif sur une campagne push

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Pause si bot_rate > 70 % — Kadam",
    "campaign_id": 8,
    "conditions": [
      { "metric": "bot_rate", "operator": ">", "value": 70, "window": "1h" },
      { "metric": "clicks",   "operator": ">", "value": 50, "window": "1h" }
    ],
    "actions": [{ "type": "pause_campaign" }],
    "check_interval_minutes": 5
  }
}

La condition clicks > 50 évite les faux positifs sur petite volumétrie.

Boost budget si ROI > 200 %

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Scale — MemoMind FR — ROI 2x",
    "campaign_id": 8,
    "conditions": [
      { "metric": "roi",         "operator": ">", "value": 2,  "window": "6h" },
      { "metric": "conversions", "operator": ">", "value": 10, "window": "6h" }
    ],
    "actions": [{ "type": "change_budget", "amount": 30, "unit": "pct" }],
    "check_interval_minutes": 60
  }
}

Règle globale (pas de campaign_id)

{
  "name": "create_automizer_rule",
  "arguments": {
    "name": "Alert — bot_rate global > 50 %",
    "conditions": [
      { "metric": "bot_rate", "operator": ">", "value": 50, "window": "1h" }
    ],
    "actions": [{ "type": "notify_email" }],
    "check_interval_minutes": 10
  }
}

Sans campaign_id, la règle évalue le bot_rate agrégé toutes campagnes confondues.

Workflow A/B test + kill-switch

Tu lances un A/B test 50/50 sur une campagne. La variante B sous-performe au-delà du raisonnable, tu veux qu'elle se pause auto.

  1. Crée le flow A/B (voir ab-testing).
  2. Crée une règle scopée à la campagne :
    {
      "name": "create_automizer_rule",
      "arguments": {
        "name": "B-killswitch — MemoMind variant B",
        "campaign_id": 8,
        "conditions": [
          { "metric": "clicks",      "operator": ">=", "value": 500, "window": "24h" },
          { "metric": "conversions", "operator": "<",  "value": 5,   "window": "24h" }
        ],
        "actions": [{ "type": "pause_landing", "landing_id": 18 }],
        "check_interval_minutes": 30
      }
    }
    
  3. Quand la règle déclenche, landing #18 (variante B) est désactivée, le flow passe 100 % sur A.

Erreurs courantes

  • AND implicite ignoré : ajouter une clé "logic": "or" dans conditions n'a aucun effet — Trackily AND tout. Si tu veux OR, crée 2 règles.
  • window invalide : "1 hour" ne marche pas, utilise "1h". Mêmes formats que 6h, 24h, 7d.
  • Opérateur en mots : Trackily accepte les alias gt, lt, gte, lte, eq, neq ET les symboles >, <, etc. Choisis un style et tiens-le.
  • Action pause_campaign sur règle globale : tu pauses TOUTES les campagnes en une fois. Confirme-toi 2 fois avant.
  • Trop d'actions, trop souvent : un check_interval_minutes: 1 qui fire change_budget à chaque tick saturera l'API de ta source. Donne au moins 15-30 min entre deux actions destructives.
  • Conditions tautologiques : conversions > 0 AND conversions < 100 ne se résout qu'entre 1 et 99 conversions. Vérifie ton seuil sur un échantillon réel avant de pousser en prod.

Voir aussi