Carts, orders, quotes and customer records
Eligibility per action, excluding those already sent and those who bought
One task per customer and action, with priority
ClickUp, CRM chat or WhatsApp, and feedback on who bought
What it solves
- The team gets the list ready in its day-to-day tool, with no spreadsheet exports.
- No one is contacted twice for the same action, and neither is a customer who already bought.
- Every list comes back with the result: who bought, how much and how fast.
Business questions it answers
Ask your agent these questions once the case is live.
What you need
- Online store, ERP or hub and CRM connected to Nekt
- The team's tool set up as a destination (ClickUp, CRM chat or WhatsApp)
- The rule for each action: who gets in, who gets out, priority and who receives it
What you get
- A table of eligible customers per action, with purchase context and priority
- Automatic delivery to the team's tool, in the format it requires
- A permanent send history that prevents repeat contact
- Feedback on who bought after the contact, with conversion rate per action
Where to activate
One task per customer with cart products, link, purchase history, priority and the originating action.
Every week, the most quoted and unclosed items with % conversion, so the team can adjust price and approach.
Early every day, yesterday's sales and quotes by store and cards in negotiation by salesperson.
The selection is simple SQL. The work is in customer identity across store, ERP and destination, in the send history and in the return loop. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.
The abandoned cart is in the online store, purchase history in the hub or ERP and the contact in the CRM, each with its own identifier. An eligibility query with no memory sends the same customer every round. The task that gets created stays open forever, because nobody links the later order to the contact. And the quote that never became an order does not even show up, because in the ERP it is not a sale yet.
How it is usually done, and the rule
Each row is a mistake that already happened in practice.
Split into three steps: (1) selection of eligible customers for the current action, the only part that changes per action; (2) exclusion of those already sent; (3) formatting in the exact layout of the destination. The eligibility table carries the action name, so the history and the feedback know where each contact came from.
Eligible: checkout with no completion date (completedAt null), with an identified customer, value above the action's minimum, each customer's latest abandonment in the window. Customers who placed an order after the abandonment are removed. To prioritize, join with ERP or hub history: customers who bought at least twice, with an average ticket above the minimum, in the order statuses that count as a sale.
In the ERP, the sales pipeline mixes quotes and orders in the same stages. Treat it as an order only when the payment method has been entered on the installment; before that, it is an open quote. For the list of most-quoted, unclosed items, count quotes per item over the last few months and the conversion (quotes that became an invoice / quotes), linking cart to invoice by the full key (store and invoice number).
The last purchase comes from ERP invoicing, not from the latest CRM activity. Lapsed means the customer went past their own purchase cycle without coming back, prioritized by customer classification (A, B, C). Not every customer who buys has a CRM record: the list comes from the ERP and creates or updates the record. A dedicated win-back pipeline in the CRM separates reactivation contact from regular sales contact.
Join the online store and the ERP by CPF (individual tax ID) or CNPJ (company tax ID) as digits only, or by lowercase email. When the destination does not store the ID, embed the key in an extractable format: an "Email: <e-mail>" line in the task description, or the ERP ID in parentheses in the card title ("NAME (123)"). With no name, use "Unnamed customer (<id>)" instead of leaving it blank.
Every round writes to an insert-only table: customer, reference (the cart, the quote), action and send date. Before sending, exclude anyone already in the history for the same action. The history is never overwritten by the next round; it is what guarantees idempotency when the send runs again.
Sends fail halfway. Before resending, read the tasks that already exist in the destination list, extract the key (the email in the description) and send only the missing ones. Run in test mode first, without writing, and make a send failure break the run so it shows up.
Read back the open tasks in the list (customers to handle, negotiating, no reply, follow-up, did not buy). When the customer placed an order after the task was created, mark the task as "bought" and store the number and value of the first order. That way each action has conversion and revenue measured by the order, not by the manual status.
Besides the per-customer lists, send yesterday's summary by store every day in the CRM chat (sales and quotes, count and value) and the cards in qualification or negotiation by salesperson, with value. Exclude system and integration users from the ranking. The text sent is the same one that gets stored, for checking.
List tables store flags (has phone, has document) and, when needed, a hash of the contact with the secret kept in the vault, not the data in clear text. Shared views show a masked CPF. Phone and email only appear in the final step, which writes to the destination.
The most used lists and who leaves them
Adjust window and minimum value per action.
Definitions
Pitfalls that already happened
The abandoned cart list had no memory, and the same customer became a task in consecutive rounds of the same action.
Insert-only send history, filtered by customer and action before every send.
A round failed halfway and was resent in full, creating duplicate tasks for those who had already gone in.
Read the destination, extract the key from the description and resend only the missing ones.
Customers bought after the contact and the tasks stayed as "to handle". The action seemed not to convert.
Automatic feedback: an order after the task changes the status to bought.
A closed pre-sales contact showed up as won in the pipeline and entered the results list as a converted customer.
Conversion measured by the order in the ERP or store, not by the CRM stage.
Joining quoted items with the catalog produced a giant filter pushed down to the warehouse read, and the weekly send failed on a size limit.
Disable broadcast join in the notebook, or pre-aggregate before the join.
Acceptance test
The case is done when every item passes.
- Running the same action twice on the same day, the second run creates no new task.
- No customer on the abandoned cart list has an order dated after the abandonment.
- For a closed round, sent = tasks created in the destination with the action in the description (zero difference).
- A test order placed by a customer on the list changes their task to bought on the next run, with the order number.
- Bought + did not buy + open equals the total sent for each action.
Agent package
Paste into Claude, ChatGPT or any client with the Nekt MCP connected.
Actionable lists for sales - Grain: one row per customer and action. The send history is insert-only (customer, reference, action, send date). - An action's eligible customers exclude anyone already in the same action's history and anyone who bought after the event (abandonment, quote). - Abandoned cart: completedAt null, identified customer, value above the action's minimum, latest abandonment per customer. - A quote becomes an order when the payment method is entered on the installment. A cart links to the invoice by the store + invoice number key. - Lapsed customer: days since last ERP purchase above the customer's average cycle. The last purchase comes from the ERP, not the CRM. - Identity: CPF (individual tax ID) or CNPJ (company tax ID) as digits only, lowercase email. In the destination, the key sits on the "Email: <e-mail>" line of the description or in parentheses in the title. - Bought = valid order after the task was created. Action conversion = bought / sent. - A CRM win is not a sale. A sale is an order or invoice. - System and integration users stay out of salesperson rankings. - Do not expose CPF, phone or email in clear text in answers; use masked values. Client exceptions: - <client>: order statuses that count as a sale in the hub <list>. - <client>: minimum value for action <action> = <value>; window <days>. - <client>: system user IDs <list>.
Build the "Actionable lists for sales" case in my Nekt workspace following the rules at https://academy.nekt.com/en/industrias/varejo/listas-acionaveis-comercial.md. 1) Find the source tables and confirm the columns the rules use. 2) Create a transformation at the stated grain applying every rule. 3) Run the acceptance test and show me the result of each item. 4) Create the case's context document in the workspace, leaving my clients' exceptions open for me to fill in.
Variations
Vehicle customers with a scheduled service and no recorded visit, with masked document, for after-sales to call.
Professionals who refer or buy for construction jobs and stopped buying, in a CRM win-back pipeline.
Score by being an existing customer, pipeline stage and source, sending the top N to each salesperson.