Weekly churn risk writeback from Qlik to Salesforce
Every Monday, pull at risk accounts from a Qlik dashboard, flag them in Salesforce, and post a prioritized outreach list in Slack.
Build me an agent workflow that runs every Monday at 8am in my timezone and turns a Qlik Cloud churn risk dashboard into Salesforce writebacks and one grouped Slack message. The trigger is a cron schedule.
Step 1. Read the dashboard from Qlik Cloud. Use Qlik Cloud's Get Visualization Data on a configured customer health or churn risk chart. I will provide the Qlik app id and the visualization (object) id at setup. The chart returns one row per account with these columns, which I will map at setup time: account name, account external id used as the Salesforce upsert key, risk score (numeric), last activity date, ARR (numeric), and CSM owner. Treat the column mapping as configuration so I can change column names without editing the workflow.
Step 2. Identify at risk accounts. An account is at risk when its risk score is greater than or equal to a configurable threshold (default 70 on a 0 to 100 scale, but ask me at setup). Also skip any account that is already flagged as At Risk in Salesforce, so we do not write back or alert twice for the same account. Make the skip behavior a toggle so I can switch it to re-flag every week if I want recurring reminders.
Step 3. Write back to Salesforce. For each at risk account, call Salesforce's Create or Update Account (Upsert) using the account external id from Qlik as the upsert key. Set the configurable health status field (default field name Health_Status__c, picklist value At Risk; let me override both at setup) and append a short note to a configurable notes or description field explaining the signal. The note should be one short sentence derived from the row, for example "Risk score 82, last activity 41 days ago, ARR $120k" or "Usage trend down, no activity in 30 days". Do not overwrite existing notes; append with a timestamp.
Step 4. Post one grouped Slack message. Use Slack's Send a Message to post to a configurable channel (default #revenue, with #cs as a common alternative). The message should: state how many accounts crossed the threshold this week, list each at risk account with its CSM owner, risk score, ARR, and a one-line signal, and present a suggested outreach order sorted by a blend of ARR and risk score so high-value, high-risk accounts are on top. Let me configure whether to @mention CSM owners and whether to also send each owner a DM with just their accounts. If there are zero at risk accounts, post a short all-clear message instead of skipping.
Setup questions the workflow should ask me on first run: Qlik tenant hostname and API key, Qlik app id, Qlik visualization id, the column mapping for account name, account external id, risk score, last activity, ARR, and CSM owner, the risk threshold, the Salesforce health status field and value, the Salesforce notes field, whether to skip already-flagged accounts, the Slack channel, and whether to @mention owners.
Quality bar: this is the canonical Qlik active intelligence pattern (analytics in, action out). Be defensive about empty rows, missing columns, and accounts that exist in Qlik but not in Salesforce (log those separately in the Slack message under a short "could not match" section instead of failing the run). Run it once end to end on a small sample before scheduling.
Additional information
What does this prompt do?
- Reads your customer health or churn risk dashboard in Qlik Cloud every Monday morning and pulls one row per account with risk score, last activity, ARR, and CSM owner.
- Finds accounts whose risk score crosses your threshold and have not already been flagged this cycle.
- Updates each at risk account in Salesforce, setting the health status field to At Risk and adding a short note explaining the signal.
- Posts one grouped Slack message in your revenue or CS channel with the at risk accounts, their owners, and a suggested order of outreach based on ARR and risk score.
What do I need to use this?
- A Qlik Cloud account with access to a customer health or churn risk dashboard that returns one row per account.
- A Salesforce account with permission to update Accounts and a health status field on the Account object.
- A Slack workspace with a channel for revenue or customer success updates.
- The names of the Qlik chart columns that map to account name, risk score, last activity date, ARR, and CSM owner.
- The Salesforce field that stores the account health status (for example Health_Status__c).
How can I customize it?
- Change the run time. Move it from Monday morning to a different day or to a daily cadence if your CS team triages more often.
- Adjust the risk threshold. Pick the score above which an account is considered at risk for your business.
- Pick the Slack channel and audience. Route the digest to #revenue, #cs, or a specific CSM channel and decide whether to @mention owners.
- Decide what counts as already flagged. Skip accounts already marked At Risk in Salesforce or include them as a reminder.
- Tune the Slack ordering. Sort the outreach list by ARR, by risk score, or by a blend of both.
Frequently asked questions
Do I need a special Qlik dashboard for this to work?
Will it overwrite my CSM team's notes in Salesforce?
What if an account is already marked At Risk?
Can it post to more than one Slack channel?
How does it decide the order of outreach?
Turn your Qlik churn dashboard into Monday morning action.
Connect Qlik Cloud, Salesforce, and Slack once, and Geni runs this every Monday so at risk accounts get flagged and your CS team knows who to call first.