Conversations
Working in the inbox day to day.
Work in the inbox
Every message your business receives lands in one list. It is not a feed to scroll — it is a queue you narrow until only your work is left. The four states a conversation can be in A conversation always has exactly one status. Changing it is how your team signals what happens next. | Status | What it means | What reopens it | |---|---|---| | Open | Somebody still has to deal with this | — | | Pending | A bot is handling it, or it is parked for one | A human reply, or the bot handing it over | | Snoozed | Deliberately out of the way until a moment you chose | The time you set, or the customer writing again | | Resolved | Finished | The customer writing again | Resolved is not closed. When a customer replies to a resolved conversation it comes back as open and rejoins the queue. On a channel with a bot attached it comes back as pending instead, so the bot gets first look. Snooze has two shapes. "Until tomorrow", "until next week" and a date you pick all set a time, and the conversation reopens on its own then. "Until next reply" sets no time at all — nothing but a new message from the customer brings it back. If the customer never writes, it stays snoozed indefinitely. Narrowing the list Three controls stack on top of each other, and they are independent: - Mine / Unassigned / All — who the conversation is assigned to. - Status — open, pending, snoozed, resolved, or all of them. - Sort — last activity, created date, priority, longest waiting, or unread count. The sidebar adds views that are not filters you build: | View | What is in it | |---|---| | Mentions | conversations where somebody wrote your name in a private note | | Participating | conversations you have taken part in, even if you are not the assignee | | Unattended | conversations nobody has ever replied to, plus conversations with a customer message still unanswered | | Teams, channels, labels | everything belonging to one team, one of your channels, or one label | A private note does not count as answering. A conversation you have only made notes on stays in Unattended. Folders: a filter you saved When a set of filters is one you will reuse — "open, urgent, WhatsApp, unassigned" — save it as a folder. It appears in the sidebar under Folders with its own unread count. A conversation folder is yours alone. There is no way to share one, and nobody else will see it. If a whole team needs the same queue, give them a team or a label, because those are account-wide. (Contact audiences can be shared; conversation folders cannot. See shared audiences.) Private notes Switch the composer to Private Note and what you write is stored on the conversation and shown only to colleagues. It is never delivered to the customer, on any channel. Use it for the handover sentence the next person needs: what you tried, what the customer actually wants, what you promised. Every agent who can open the conversation can read every note on it, so write accordingly. Two things are switched off inside a note: canned responses and message variables. Both exist to compose a message to a customer, and a note is not one. Mentioning a colleague Type @ inside a private note and pick a person or a team. They get a notification, the conversation appears in their Mentions view, and they become participants so they keep getting updates. Mentioning a team notifies every member. A mention only works inside a private note. Typing @name in a normal reply sends the text to the customer and notifies nobody. You can only mention a member of that channel, or an administrator. A name outside that list is ignored silently — so if a colleague never answered, check they are on the channel. A worked example A customer asks about a delayed order on Thursday. You cannot answer until the warehouse replies on Sunday. 1. Add a private note: "Chased warehouse re order 10482, waiting on them." 2. Mention the person who owns warehouse questions, so it reaches them. 3. Snooze the conversation until next week. On Monday it is back in the open queue with the note explaining itself. If the customer writes before then it reopens immediately. Who can do this Any agent can read, reply, note, mention and change the status of any conversation on a channel they belong to, or assigned to one of their teams. An administrator sees everything. A custom role can narrow this to unassigned conversations only, or to conversations the person is participating in — see roles and permissions. Limits - Selecting conversations in bulk covers only the page in front of you. Scroll and the earlier selection is not extended. Bulk actions reach status, snooze, agent, team and labels — not priority. - A folder's conditions are limited to conversation facts: status, assignee, priority, channel, team, contact, campaign, labels, browser language, referrer, dates and your custom attributes. You cannot filter a folder by what the contact bought. - Mute does more than mute. Muting a conversation resolves it and blocks the contact, so nothing further from that person opens a conversation. Use it for abuse, not for a noisy thread. Related - Assign and prioritise - Labels - Canned responses - Macros - The WhatsApp 24-hour window If it does not work The conversation is not in my list. Check the three filters first — the status filter is the usual culprit, because a resolved conversation vanishes from an open-only list. Then check you are a member of that channel. I cannot type a reply, only send a template. That is the WhatsApp 24-hour window, not a permission problem. The WhatsApp 24-hour window explains it. A snoozed conversation never came back. It was snoozed until next reply, and the customer has not replied. Open it from the snoozed list and change the status by hand.
Assign and prioritise
An unassigned conversation belongs to everybody, which in practice means nobody. Assignment is how a conversation gets exactly one owner. Two kinds of owner A conversation can carry an agent, a team, or both. They answer different questions. | | What it says | Where it shows | |---|---|---| | Agent | "this specific person is replying" | the Mine tab, their notifications | | Team | "this group owns the question" | the team view in the sidebar | They interact in one way that surprises people. Assigning a team removes an assignee who is not in that team. The conversation has moved to a different group, so the previous owner stops being the owner. If the team has auto-assignment switched on, Lynomia Chat then picks one of its members; if not, the conversation sits unassigned inside the team until someone takes it. You can only assign an agent who is a member of that channel, or an administrator. Someone outside the channel cannot be given the conversation at all, and nothing is assigned. Letting Lynomia Chat assign Each channel has an auto-assignment switch, set by an administrator in the channel's settings. With it on, new conversations are handed out without anyone intervening. The default behaviour is deliberately plain: - Only agents whose availability is online are considered. An agent set to busy or offline gets nothing. - Conversations go out oldest first. - Agents are picked in turn — round robin. - An agent receives at most five new conversations from one channel in any five minutes. This stops one person absorbing a burst. - Conversations with no activity for more than seven days are left alone, so an old backlog does not land on whoever happens to be online today. - If the conversation already has a team, only that team's members are considered — and only if that team allows auto-assignment. An administrator can replace these defaults with an assignment policy on a channel: oldest-first or longest-waiting, round robin or balanced across current load, and different fair-distribution numbers. Assignment policies are a paid capability and the screen is hidden unless advanced assignment is enabled for your account. Without it you get the defaults above, which are enough for most teams. What priority is, and is not Priority has five values: none, low, medium, high and urgent. Priority is a marker, not a mechanism. Setting a conversation to urgent does not move it up the auto-assignment queue, does not notify anyone extra, and does not start any clock. What it does: - you can sort the conversation list by priority, highest or lowest first; - you can filter and save a folder on it; - automation rules can read it as a condition and set it as an action; - a macro can set it. That makes it genuinely useful — as long as somebody is actually looking at the urgent queue. A priority nobody sorts by is decoration. Steps 1. Open the conversation. 2. In the panel beside it, pick an agent, a team, or both. 3. Set a priority if this one is not ordinary. To do several at once, tick the conversations in the list and use the bar that appears: assign an agent, assign a team, change status, snooze, add or remove labels. A worked example A customer messages about a damaged delivery. It is not a question you can answer, and it needs a decision today. 1. Set priority to high. 2. Assign the returns team. Your own assignment is cleared, because you are not in that team. 3. Add a private note saying what the customer sent you. The returns team's view now shows it, sorted above their ordinary work if they sort by priority. Who can do this Any agent can assign a conversation they can see — including to themselves — and change its priority. Only an administrator can switch auto-assignment on for a channel, create teams, or create an assignment policy. See roles and permissions and teams and agents. Limits - Auto-assignment needs somebody online. If no agent on the channel is online when a conversation arrives, it stays unassigned. - Without an assignment policy, assignment runs when something happens on the channel — a conversation is created, opened, resolved or snoozed. There is no separate sweep. A conversation that found nobody online waits for the next such event in that channel. - Balanced distribution is only honoured when advanced assignment is enabled. A policy set to balanced falls back to round robin without it. - Priority cannot be changed in bulk. The bulk bar covers status, snooze, agent, team and labels only. - Assigning a bot to a conversation sets it to pending and clears the human assignee. That is a handover, not a shared ownership. Related - Work in the inbox - Teams and agents - Macros - Automation rules - Macros or automation? If it does not work I assigned a team and lost the conversation from my Mine tab. Expected: the team is not one you are in, so your assignment was cleared. Assign yourself again after the team if you want to keep it. Auto-assignment is on but nothing is being assigned. Check, in order: is at least one agent on that channel set to online; are the waiting conversations older than seven days; has one agent already taken five in the last five minutes; if the conversations have a team, does that team allow auto-assignment. I cannot find a colleague in the assignee list. They are not a member of that channel. An administrator adds them in the channel's settings.
Labels
A label is a decision somebody made, written down. You put it on and it stays until somebody takes it off. Nothing in Lynomia Chat ever adds or removes one on its own. That single property — a label is stored, not calculated — decides everything else about when to use one. Conversation labels and contact labels are different things This is the most common misunderstanding, and it costs real money when it goes wrong. | | What it describes | Where you set it | What reads it | |---|---|---|---| | Conversation label | this one exchange | the panel beside the conversation | the label views in the sidebar, conversation folders, reports | | Contact label | this person, across all their conversations | the panel on their contact record, or the contacts list in bulk | the contact's label page, campaign recipients | They draw from the same catalogue but are stored separately. Tagging a conversation vip does not make that person a vip contact. Build a campaign to the vip label when the tag only ever went on conversations, and it reaches nobody. The same trap sits inside automation. An automation rule's "add label" action labels the conversation, always. No action anywhere in Lynomia Chat labels a contact. When to use one Use a label when the answer is a judgement your team made and would otherwise be lost: vip · wholesale · needs-follow-up · complaint-escalated · event-attendee · do-not-call · refund-issued · arabic-speaker A good test: could a new colleague work this out from the data alone? If not, a label is exactly right, because nothing else in the product can record it. When not to use one Do not use a label for anything that can change without anybody touching the contact. "Recent buyers" as a label is correct on the day you apply it and wrong a month later. Nothing warns you, and the campaign you send to it reaches exactly the people who should no longer be in it. Membership that works itself out belongs in a shared audience: a saved question about your contacts, answered again every time it is opened, counted or sent to. | The thing you want | Use | |---|---| | customers who bought in the last 30 days | a shared audience | | customers with an open order | a shared audience | | customers who have spent over a threshold | a shared audience | | customers of one store | a shared audience | | customers we decided are VIP | a label | | customers who asked not to be contacted | a label | Labels or shared audiences? goes deeper. Both are first-class recipient sources for a campaign, so choosing correctly costs you nothing at the point of sending. Keeping a label set that stays useful - Fewer, sharper labels. Twelve that everyone uses beats eighty where three people each invented a spelling. - Write the description. It exists so the next person applies the label the way you meant. - Only put the ones you navigate by on the sidebar. Each one is a view with its own unread count. - Rename rather than recreate. Renaming updates every conversation and contact already carrying it. Creating vip-customer beside vip splits your data in half, permanently. Naming rules Labels are stored in lower case, whatever you type. A label must be at least two characters, must start with a letter or a number, and may then contain letters, numbers, hyphens and underscores. Spaces are not allowed — write needs-follow-up, not needs follow up. Arabic letters are fine. Each label is unique in your account. Steps To create one: Settings → Labels → Add label. Give it a name, a description, a colour, and decide whether it belongs on the sidebar. To apply one to a conversation: open the conversation and pick it in the panel beside it. To apply one to a contact: open the contact, or tick contacts in the contacts list and use Assign labels in the bar that appears. A worked example You want to be able to message wholesale buyers about stock before anyone else. 1. Create a label wholesale with a description that says who qualifies. 2. In the contacts list, filter to the accounts that are wholesale, tick them, and Assign labels → wholesale. 3. In the sidebar, under Contacts → Tagged with, open wholesale. Use in a new WhatsApp campaign starts a campaign with those contacts as the recipients. Note step 2 put the label on the contacts, which is what the campaign reads. Who can do this Creating, renaming, recolouring and deleting labels is an administrator job. Any agent can apply and remove existing labels on conversations and contacts they can see. The split keeps the catalogue coherent while letting the people doing the work use it. Limits - Nothing maintains labels for you. No rule, job or schedule anywhere adds or removes a contact label. - There is no automation trigger for a contact being created or changed, and no automation condition on a contact label. - Labelling conversations in bulk covers only the page in front of you. Labelling contacts in bulk can cover every contact matching the view you are looking at, up to 10,000 — above that Lynomia Chat refuses rather than silently doing part of the job. - Deleting a label removes it from everything carrying it. There is no undo. Related - Labels or shared audiences? - Shared audiences - Work in the inbox - WhatsApp campaigns - Contacts If it does not work My campaign to a label found no recipients. The label is on conversations, not on contacts. Open it under Contacts → Tagged with: if that page is empty, that is the answer. Apply the label to the contacts from the contacts list. I cannot save the label name. It has a space in it, is one character long, or starts with a hyphen or underscore. An agent cannot find the label. It has not been created in Settings yet. Agents can only apply labels that already exist.
Canned responses
A canned response is a reply you have written once and saved under a short code. When an agent types / in the composer, they can find it and drop it into the message in a keystroke or two. It is for the sentences your team types every single day — opening hours, delivery timescales, how a refund works, what documents you need. Saving them does two things: it makes answering faster, and it makes every agent answer the same way. When not to use one - It is not a WhatsApp template. A canned response is ordinary message text, so it is only sendable when you are allowed to send ordinary text. Outside the 24-hour window you can send nothing but an approved template, and a canned response will not go. See the WhatsApp 24-hour window and WhatsApp templates. - Not for a reply that needs real thought. A customer who can tell they received a stock paragraph to a specific question is a customer who feels unheard. - Not for a sequence of actions. If the reply always comes with assigning, labelling and resolving, that is a macro, and a macro can send the message too. What you need first Nothing. Canned responses work on every channel and need no setup beyond writing one. Steps 1. Go to Settings → Canned responses → Add canned response. 2. Give it a short code — the word you will type after /. Keep it short and guessable: hours, delivery, refund-policy. Each short code is unique in your account. 3. Write the message. Use variables where the text should change per customer. 4. Save it. To use it: in the composer, type /, then start typing. Search matches both the short code and the body, with short-code matches ranked first. Pick one and it is inserted. Variables A variable is a placeholder in {{double braces}} that is replaced with real values. Type {{ in the composer to pick from the list. | Variable | Becomes | |---|---| | {{contact.name}} | the customer's full name | | {{contact.first_name}}, {{contact.last_name}} | the first or last word of their name | | {{contact.email}}, {{contact.phone}} | their email address, their phone number | | {{contact.id}}, {{conversation.id}} | the contact's and the conversation's numbers | | {{agent.name}}, {{agent.first_name}}, {{agent.last_name}}, {{agent.email}} | the person sending the message | | {{inbox.name}}, {{inbox.id}} | the channel the conversation came in on | Any custom attribute you have defined on contacts or conversations is also available, as {{contact.custom_attribute.your_key}} or {{conversation.custom_attribute.your_key}}. Three details that matter: {{agent.*}} is whoever is sending, not whoever is assigned. If you reply on a colleague's conversation, the signature says your name. Names are tidied up. Each word of a name has its first letter capitalised and the rest lowercased, so a contact saved as AHMED al-sabah arrives as Ahmed Al-sabah. A variable with no value disappears. If a contact has no name, Hello {{contact.name}}, sends as Hello ,. Nothing warns you. Write around it — Hello, on its own line is safer than a greeting that can break. When you insert a canned response the variables are filled in immediately, with the real values, right in the composer. What you see before pressing send is what the customer gets. Read it. Formatting the channel cannot carry is removed at the same time, so a bulleted list saved for an email channel arrives as plain lines on WhatsApp. A worked example Your team answers "when will my order arrive?" twenty times a day. 1. Short code: delivery. 2. Message: Hello {{contact.first_name}}, orders inside Kuwait arrive in 2 to 3 working days. You will get a message from us the moment yours ships. 3. In a conversation, type /delivery and pick it. The composer shows Hello Fatima, orders inside Kuwait… before you send. Who can do this Any agent can create, edit, delete and use canned responses. They are not personal — every one is shared by the whole account, and anyone editing one changes it for everybody. Agree the set with your team rather than each inventing your own. Limits - Canned responses are account-wide only. There is no such thing as a private one for you alone. (Macros do have a private option — see macros.) - They are switched off inside a private note, along with variables. Both exist to compose a message to a customer. - A canned response is plain text and attachments are not part of it. A macro's "send attachment" action can send a file; a canned response cannot. - Nothing checks that your variables are spelled correctly. A typo in a variable name is rendered as nothing. Related - Work in the inbox - Macros - WhatsApp templates - The WhatsApp 24-hour window If it does not work Typing / does nothing. You are on the private note tab. Switch back to the reply tab. The customer received {{contact.name}} as literal text. The variable name is misspelled, or it is not one of the variables above. Type {{ and pick from the list instead of typing the name. A sentence arrived with a gap in it. The variable had no value for that contact — most often a contact with a phone number but no name. I can only send a template on this conversation. More than 24 hours have passed since the customer last wrote. That is WhatsApp's rule, and no canned response gets around it.
Macros
A macro is a named list of actions, run in order, on one conversation, because a person pressed it. Think of the sequence your team repeats without thinking. Escalating: raise the priority, hand it to the right team, tag it, leave a note explaining why. Four separate clicks in four separate places, done slightly differently by each agent, several times a day. A macro makes it one. When to use one When the same group of actions always goes together, and a person decides when. That decision is the whole point of a macro — it waits for judgement, and then does the mechanical part perfectly. When not to use one - When nobody needs to decide. If the trigger is an event rather than a judgement, you want an automation rule. Macros or automation? is the full comparison. - When it is only a message. One reply and nothing else is a canned response. - When it needs to wait for the customer's answer. A macro runs its actions and stops. A conversation that branches on what the customer says is a job for the flow builder. What a macro can do Fifteen actions, in any order, repeated as often as you like: | Group | Actions | |---|---| | Ownership | assign an agent, assign a team, remove the assigned agent, remove the assigned team | | Classification | add a label, remove a label, change priority | | Status | resolve, snooze, mute | | Messages | send a message, add a private note, send an attachment, send an email transcript | | Elsewhere | send a webhook event | Two of these are worth calling out. "Assign an agent" offers Self. It means whoever presses the macro, not a named person — so one macro works for the whole team. "Snooze" in a macro sets no time. It snoozes until the customer's next reply. If you want a timed snooze, do it by hand. Steps 1. Go to Settings → Macros → Add macro. You can start from a ready-made macro in the starter gallery, or build one action at a time. 2. Name it for what it achieves, not for what it does: "Escalate to management" reads better in a list than "Priority + assign + label". 3. Add actions. They run top to bottom, and you can drag them into order. 4. Choose Private (only you) or Public (everyone in the account). 5. Save. To run it: open a conversation and press the macro in the panel beside it, or type # in the composer and pick it. Either way you see the list of actions before it runs. A worked example A customer's question needs the manager, and your team has been handling this inconsistently. 1. Create a macro called Escalate to management: - change priority to high - assign team management - add label complaint-escalated - add private note: "Escalated. Please review and reply." 2. Make it Public so the whole team has it. 3. An agent reading a complaint presses it once. The conversation is now high priority, owned by management, findable later by its label, and carries a note saying what happened. The agent still decided this was an escalation. The macro removed the four chances to forget a step. Who can do this | | Private macro | Public macro | |---|---|---| | Agent | create, edit, delete, run | run only | | Administrator | their own | create, edit, delete, run | An agent choosing "Public" when they create a macro gets a private one instead — this is enforced on the server, not only hidden in the interface. Public macros are an account-wide standard, so changing them is an administrator's call. The order macros appear in beside a conversation is yours: drag them, and your own arrangement is remembered. It does not change what anyone else sees. Limits - A macro has no conditions and no branches. Every action runs every time. If an action should only happen sometimes, make two macros. - A macro cannot read or change a store order. There is no commerce action. What it can do is route an order question to the people who can open the store — see Commerce. - A failed action is not reported. Actions are attempted one at a time, and if one cannot complete the rest still run. You will not get an error. Check the conversation afterwards the first few times you run a new macro. - "Send a message" obeys WhatsApp's rules. A macro that sends ordinary text on a WhatsApp conversation outside the 24-hour window does not deliver that message, although the rest of the macro still runs. See the WhatsApp 24-hour window. - Mute does more than mute. The mute action resolves the conversation and blocks the contact. Do not put it in a macro your team runs casually. - If a macro resolves the conversation and your account requires certain conversation attributes before resolving, you are asked for them. Dismissing that prompt still runs the macro, but leaves the conversation unresolved. - Messages and notes in a macro are fixed text, with one exception: variables in double braces, such as {{contact.first_name}}, are filled in when the message is sent, exactly as in a canned response. Related - Macros or automation? - Canned responses - Automation rules - Assign and prioritise - Labels If it does not work The macro is not in the panel. It is somebody else's private macro, or it has not been created yet. Nothing visible happened. Macros run in the background. Reload the conversation. If it still looks untouched, one of the actions could not complete — most often assigning an agent who is not a member of that channel, or adding a label that does not exist in Settings. I cannot edit a public macro. Only administrators can. Ask one, or copy the actions into a private macro of your own.
Macros or automation?
Macros and automation rules do almost the same things to a conversation: assign it, label it, change its status and priority, send a message, leave a note, call a webhook. Read only the list of actions and you could not tell them apart. The difference is one thing, and it is the only thing that matters: A macro waits for a person. An automation rule waits for an event. Everything else follows from that. Side by side | | Macro | Automation rule | |---|---|---| | Who starts it | an agent presses it | an event fires it | | How many conversations | the one in front of them | every conversation the event happens on | | Conditions | none — every action always runs | yes, and nothing runs unless they match | | Preview before it runs | yes, the action list | no, it has already happened | | Who can create it | any agent (private), administrators (public) | administrators only | | Can be switched off | delete it, or stop pressing it | an on/off switch, kept for later | | Runs while nobody is working | no | yes | | Judgement involved | the agent's | none | Choose a macro when - Somebody has to read the conversation first. "Is this an escalation?" is not a question a condition can answer. - You want the agent in control. They see the actions before pressing, and can choose not to. - An agent needs it and nobody will build it for them. Any agent can create a private macro in two minutes; an automation rule needs an administrator. - It should assign to whoever is dealing with it. A macro's "assign an agent" offers Self, meaning the person pressing. Automation has no equivalent, because there is nobody pressing. Choose an automation rule when - The trigger is a fact, not a judgement. A conversation arriving. A message containing a word. An order being shipped. - It must happen even at 3am. Rules run whether or not anybody is logged in. Macros never run themselves. - It must happen every time. Relying on each agent remembering to press something is how a process quietly stops being followed. - It needs to see things a macro cannot. A rule can condition on the message's text, the contact's country, the language, the channel, a label, a custom attribute, a shared audience the contact is in, or what your store knows about them. A macro has no conditions at all. What each one can trigger on A macro has no trigger. An agent presses it. An automation rule picks exactly one event: | Event | Fires when | |---|---| | Conversation created | a new conversation arrives | | Conversation updated | something about it changes | | Conversation opened | it moves into open | | Conversation resolved | it moves into resolved | | Message created | a message is added | | Commerce order created / updated / paid / shipped / delivered / cancelled / refunded | your connected store reports that change | The Commerce events need Commerce connected and act on the contact's most recent conversation. They deliberately offer no customer-facing message action: a store event is not a customer message, and the conversation may be outside its 24-hour window. The few actions only one of them has The action lists overlap almost entirely. The exceptions: - Automation only: email a team, reopen a conversation, mark a conversation pending. - Macro only: assign to Self. Everything else — labels, priority, agent, team, resolve, snooze, mute, send a message, private note, attachment, email transcript, webhook — is available in both. A worked example of using both Every WhatsApp conversation that mentions "refund" should be labelled and routed, and then a human decides whether it becomes a formal complaint. 1. An automation rule, on message created, condition content contains "refund": add the label refund and assign the returns team. Every time, including overnight. 2. A macro called Escalate to management, pressed only when the customer is genuinely unhappy: priority high, assign management, label complaint-escalated, private note. The rule does the part with no judgement in it. The macro does the part that needs a person, and makes that decision fast and consistent. Who can do this Creating and editing automation rules is administrator-only. Creating a private macro is open to any agent; public macros are administrator-only. See roles and permissions. Limits - An automation rule's actions do not trigger other rules. A rule that resolves a conversation will not set off your "conversation resolved" rule. This stops loops, and it also means you cannot chain rules. - A macro cannot wait. Neither can an instant automation rule. A rule can be set to run after a delay — "if the conversation is still in this status N minutes later" — but delayed automation is a capability that has to be enabled for your account, and it is off by default. - A delayed rule can only wait on status, and on the channel. It cannot wait on a label, an assignee or a changed attribute. - Neither can ask the customer a question and branch on the answer. That is the flow builder — see Automation or flow builder?. - Neither reports a failed action to you. Check the result the first few times you use a new macro or rule. Related - Macros - Automation rules - Automation or flow builder? - Canned responses - Assign and prioritise If it does not work My macro did not run on its own. It never will. A macro only runs when somebody presses it. If you want it automatic, rebuild it as an automation rule. My automation rule did nothing. Check it is switched on, that the event is the one that actually happens, and that the conditions match. A condition on something the event cannot see — a label on a conversation that has not been labelled yet — never matches. The rule ran twice. Two rules on different events can both match the same change. Check the list rather than assuming one rule misbehaved.