In Gainsight, both Rules and Connectors are essential tools for managing customer data and automating Customer Success workflows. However, they serve fundamentally different purposes in the data lifecycle. Understanding this distinction is key to building an efficient and scalable Gainsight platform.1. When to Use Connectors: The Data Input PhaseConnectors are your primary mechanism for ingesting and synchronizing external customer data into Gainsight. Their role is to establish a bridge between Gainsight and the various systems where your customer data resides. Use Case Rationale Initial Data Ingestion You need to bring customer records, usage data, support ticket logs, or billing information into Gainsight for the first time. External System Synchronization You need to maintain a live or scheduled sync of data (e.g., account updates, contact details) from core external systems like Salesforce or Jira Usage Data Integration You are collecting product usage metrics from specialized platforms or file storage (eg S3) Data Source The data is currently outside of Gainsight's Matrix Data Architecture (MDA). In short: Use Connectors when the data is outside Gainsight and needs to be brought in, and you don’t need to perform complex calculations, data normalization, or conditional transformations* before the data hits Gainsight’s MDA.(*) Some connectors allow transformations. Refer to this document 2. When to Use Rules: The Logic and Action Engine Rules Engine is the in-platform automation powerhouse. It is designed to execute business logic and take action based on data. Crucially, its source can be either:· Data that is already loaded into Gainsight objects (internal MDA data).· External data Sources configured to work with a Rule, such as the S3 Connector, effectively making the Rule the mechanism for both ingestion and transformation. Capability Rationale Data Ingestion (with Transformation) The Rule can then perform cleanup, validation, and complex lookups before loading the final, clean data into a Gainsight object. Complex Data Transformation Aggregating raw daily usage data into a weekly or monthly score, calculating derived metrics, and standardizing text fields. Data Validation and Cleansing Applying conditional logic to check for missing values or invalid formats and correcting them, or routing records with errors to a separate object for review. Workflow Automation Executing the most critical Customer Success actions, such as triggering CTAs based on calculated health scores or usage drops, or directly updating those Scorecard measures. Data Source Internal Gainsight objects or external sources channeled through the Rule's data setup. Core Function: Ingestion, Transformation, and AutomationThis is where raw data is analyzed, cleaned, standardized, aggregated, and used to drive workflows. Advanced Tips, Tricks, and Caveats 🪄 When working with Rules Engine and Connectors (Jobs) in Gainsight, a few advanced tips, tricks, and key differences can save you significant troubleshooting time. Connectors (Jobs) SpecificsPreview Limitations: The Job (Connectors 2.0) preview does not honor filters you've set up. To validate your connector logic, you'll need to simulate the same setup using Data Designer or the Rules Engine. Testing and Runs: You cannot test Jobs before running them. Additionally, unlike the Rules Engine, all runs are displayed as scheduled; you can't distinguish between manual and scheduled runs. Time Zones: The time information displayed on the Jobs and Activities page is in the application's time zone. (You can check yours under Administration → General → Application Settings). Applications Settings menu Real-Time Sync: Some Jobs can be set up for real-time processing (like the Salesforce to Gainsight Real-Time Sync). Rules Engine also supports Real-Time Rules for certain events, though both are complex topics in their own right. Shared Automation Best Practices 🏆 Notifications: Beyond the Inbox: Both Jobs and Rules support chaining and notifications. To keep your inbox clean and give visibility to a broader team, consider posting notifications directly to Slack. This can be achieved by simply using a channel's email address or by leveraging External Actions for a more programmatic approach. (See this tutorial for details on using External Actions.) Send notification to a Slack Channel wihout using External Actions Advanced Scheduling: Cron Expressions for advanced scheduling are only available for standalone rules, not for Rule Chains or Jobs. Nailing Naming and Safety: While a basic best practice is always using clear naming conventions, an even more critical one is building killswitches into your rules. This safety measure, as detailed by @jason_metzler, provides a critical safety infrastructure for your automation.Bonus Tip: The MDA Assets Counts + Details Export 💡 If you're ever struggling to find where an asset is used, the MDA Assets Counts + Details export is a true treasure trove! You can export this info from the Analyzer section by navigating to Administration → General → Analyzer → Configuration Home → Export. Where to find the “MDA Assets Counts + Details” ExportWhy is this file so useful? It can quickly answer questions like:Which specific programs use a certain email template? What reports are being sourced from a specific data space? What reports are included in a specific dashboard? When was a program created?Plus, if you ever need to track down the rule that triggered a specific CTA, simply copy the "Rule Action ID" from the CTA object and search for it in the Rules tab of this report. For those of us who have already browsed the documentation and can't find the answer in the UI, this report is the next best place to check before reaching out to support. Conclusion 🏁 We've explored the strengths of Rules Engine for flexibility and Connectors (Jobs) for efficient, high-volume data ingestion. By understanding where each excels -and remembering the tips and caveats outlined above- you can build a robust and highly scalable automation strategy in Gainsight. Ultimately, there are scenarios where their capabilities might overlap or where the choice between them could come down to personal preference, existing team workflows, or specific nuances of your Gainsight implementation. However, remember that long-term success is built not just on execution, but on governance: establishing clear ownership of all automation assets, maintaining documentation, and periodically reviewing schedules for optimization are critical steps to prevent system clutter and maintain optimal performance. Now it’s your turn to contribute to the knowledge base. What's the latest automation challenge you successfully solved using Rules or Connectors? What's your top tip or 'gotcha' for using these tools effectively? As a bonus, did the MDA Assets Counts + Details report show you something new today? Share your thoughts and best practices in the comments!
Background: The Scheduling StruggleEvery CSM knows this pain — manually sending emails to schedule a renewal call, EBR, or Joint Success Plan meeting. The back-and-forth to find a time that works is not just tedious, it’s a poor use of high-value CS time. While many teams have tools like YouCanBook.Me or Calendly, they still rely on manual effort to send links and track outcomes.We knew we had to automate and scale this process. Problem Statement:CSMs are manually reaching out to customers to schedule strategic calls (Renewals, EBRs, Success Plans), resulting in wasted time, inconsistent follow-ups, and lack of visibility on what’s working. Solution: A Fully Automated Booking Funnel with Gainsight JO + Booking Platform + Gong We implemented a Journey Orchestrator-based campaign that:Automatically sends personalized calendar booking emails to customers Tracks every step of engagement (open → click → booking → execution) Ties bookings to business outcomes like renewal conversions Measures ROI and performance by CSM, region, and programLet’s break it down. 👇 Build Steps Step 1: Change ManagementWe kicked off with strong change enablement using ADKAR/ Nudge Theory, aligning CSMs and CS Leaders on the “why.” The goal: save time, increase consistency, and measure impact. Step 2: Create Email Templates in GainsightEach email was crafted for a specific purpose (e.g., Renewal discussion), including:Clear value proposition Direct YouCanBook.Me or Calendly link for the CSM Friendly, human tone We designed 2–4 emails per Journey, including reminders with strategic escalation (e.g., final reminder from CCO). Step 3: Build Journey OrchestratorsFor instance - We created JOs based on key triggers. For example, in the Renewal Use Case, emails were sent:120 days before renewal – from the CSM 90 days before renewal – from the CSM 60 days before renewal – from the CS Team Lead 45 days before renewal – from the C-suite Each touch increased urgency and accountability. Step 4: Capture Bookings via Calendly or YouCanBook.Me WebhookWe integrated Calendly or YouCanBook.Me’s APIs to send booking data into Gainsight’s Object. For each booking, we captured:Booking Date Contact Email Meeting Title / Subject Link to the original email campaign This allowed attribution back to the JO that drove the booking. Step 5: Match Meetings to Execution via GongWe connected Gong’s Timeline Integration to Gainsight. This gave us:Meeting completion confirmation (based on Gong call) Topic validation (based on call title/transcript) Real signal of meeting quality Data Model: Making It All Work Together To tie it all together, we created a Universal Data Model in Gainsight: Object Description Email Log V2 Capture email sent date, open/click status, JO name, contact email BookingYCBM (Custom Object) Captures who booked, when, and what for Activity Timeline / Attendee Verifies if the booked meeting was actually held (via Gong) We then created rules to Attribute outcomes (e.g., renewals, value realized) Outcomes & ReportingWith everything in Gainsight, we built dashboards to measure:Email open, click, and bounce rates Booking conversion rate per JO Meeting execution rate (via Gong) Verifiable business outcomes – like % of booked meetings that led to renewals + associated $ valueKey TakeawaysAutomate with Intent: Use JO to drive urgency and accountability. Integrate Thoughtfully: YCBM/ Calendly + Gong + Gainsight = full-funnel visibility. Build Attribution Logic: Get credit where it’s due — show value. Drive Adoption with Change Management: Get your CS team bought in early.Let’s scale CS without scaling manual effort. 💪Tried something similar in your org? Have questions or ideas? I’d love to hear from you—drop them in the comments!
After a pair of acquisitions and the decision to consolidate CS in Gainsight, we needed to migrate notes from Planhat and Catalyst into Timeline. This post documents how we migrated notes, including the conventions we used, the mapping decisions we made (authors, activity types, companies, attendees), and a few issues to be aware of/avoid.If you’re planning a similar migration, follow along, hope this helps. Migration goalsMove legacy notes, meetings, QBRs, and other interactions into Gainsight Timeline with original authors, dates, and attendees. Make it safe to rerun batches without creating duplicates. Make the source system visible on every migrated activity.Our conventions:External Id The record Id from either Planhat or Catalyst Guarantees global uniqueness and gives a natural “upsert”. Replays won’t create dupes; you can PUT with identifier=externalid to fix records. We used this more than I’d like to admit External Source Catalyst: External Source = “Catalyst Notes - Legacy Heap” Planhat: External Source = “Planhat Notes - Legacy Hotjar” Visible in UI and queryable in data. The source is visible in global timeline as well as in the individual activity record. External Attendees were uploaded to Gainsight prior to migration, and mapped to their Company Person record via their email.We were able to map to specific activity types and maintain the correct dates in our migration Field and object mapping decisionsActivity Type mapping We mapped legacy types to existing Gainsight TypeName where possible (e.g., Meeting, Update, Strategic Business Review). Where we had unique legacy types, we defaulted to “Update” to keep things clean. Authors (internal) Match legacy user email → Gainsight GsUser via lookup. Where a legacy user didn’t exist in Gainsight, we used a designated “System Migration” user as Author and logged the legacy author in Notes. Company Thankfully, we had the account ids in Gainsight from both platforms and were able to use them to resolve to Company GSID. Dates and time zones Converted all legacy timestamps to ISO 8601 with milliseconds (yyyy-MM-dd'T'HH:mm:ss.SSSXXX) in the target timezone (usually UTC). This avoids parsing failures and inconsistent ordering. Notes/Body We normalized notes to HTML (paragraphs/lists). Plain text is fine, but HTML lets you preserve formatting. Remember the 131,000 character limit, we just trimmed any additional characters. Attendees Internal attendees: mapped internal users by email → GsUser via lookup. External attendees: mapped legacy customer contacts → Company_Person via Email + Legacy Account Id in the lookup. We added all of these contacts to Gainsight Company Person prior to migrating the notes. APIs we usedCreate (single/bulk): POST v1/ant/es/activity, POST v1/ant/es/activity/bulk Update (single/bulk): PUT v1/ant/es/activity?identifier=externalid|activityid|gsid and PUT v1/ant/es/activity/bulk?identifier=... Read/verify: POST v1/data/objects/query/activity_timeline Job status: GET v1/ant/es/job/status/{jobId}; abort when SUBMITTED: PUT v1/ant/es/job/abort/{jobId} Limitations we planned around:No reparenting: you cannot move an existing Timeline Activity to a different Company/Relationship via API. Use Support or re-create + delete. Associated Records can add secondary associations but do not remove the primary. No attachments/Linked Objects in API payloads. Data transformation pipeline (Catalyst/Planhat → Gainsight)Extract to CSV Export activities with fields: id, type, subject, body/notes (HTML/text), created_at, updated_at, author_email, company_name (and company identifier), participants (internal/external), relationship (if any), legacy URL. Deduplicate on (company, subject, timestamp, author) where legacy tools created duplicates; keep one unique record. Normalize Type mapping to Gainsight TypeName. Convert notes to safe HTML; fix invalid markup. Prepare External Id Add in the External Source Convert all timestamps to ISO 8601 with milliseconds. Pre‑checks Verify all internal authors exist in GsUser; map fallbacks. Ensure Company Person records exist for external attendees Validate Company mapping. Load plan Map legacy record types to Gainsight activity types. Chunk files <80MB for bulk API Run bulk POST by source system Poll job status; capture failures with reasons; repair and replay as needed (same External Id). Verify and reconcile Use Report Builder to check External Source and compare record counts vs legacy sources. Build a reconciliation dashboard in Gainsight using activity timeline filters on External Id or External Source. Correct any issues with PUT identifier = External Id. Example payloadCatalyst record (Company)External Id holds the record id from Catalyst: “93f6aeb5-f18f-4c66-afe1-731ee1fc3855” External Source holds the source system note; Catalyst or Planhat.{ "records": [ { "ContextName": "Company", "TypeName": "Strategic Business Review", "ExternalSource": "Catalyst Notes - Legacy Heap", "ExternalId": "93f6aeb5-f18f-4c66-afe1-731ee1fc3855", "Subject": "Business Review Recap/ Note before parental leave", "Notes": "{{NOTES}}", "ActivityDate": "2023-05-08T08:14:00.000Z", "Author": "csm@yourco.com", "companyName": "Acme Corp", "internalAttendees": ["csm@yourco.com","am@yourco.com"], "externalAttendees": ["jane.doe@acme.com","john.smith@acme.com"] } ], "lookups": { "AuthorId": { "fields": { "Author": "Email" }, "lookupField": "Gsid", "objectName": "GsUser", "multiMatchOption": "FIRSTMATCH", "onNoMatch": "ERROR" }, "GsCompanyId": { "fields": { "Heap_Account_Id__gc": "Id" }, "lookupField": "Gsid", "objectName": "Company", "multiMatchOption": "FIRSTMATCH", "onNoMatch": "ERROR" }, "InternalAttendees": { "fields": { "internalAttendees": "Email" }, "lookupField": "Gsid", "objectName": "GsUser", "multiMatchOption": "FIRSTMATCH" }, "ExternalAttendees": { "fields": { "externalAttendees": "Person_ID__gr.Email", "Heap_Account_Id__gc": "Account_Id" }, "lookupField": "Gsid", "objectName": "Company_Person", "multiMatchOption": "FIRSTMATCH" } }} How we loaded the data:Load in batches by source system (e.g., all Catalyst Business Reviews first), to keep job sizes under 80MB. Always include lookups for authors, companies, and attendees. ExternalAttendees lookups require the company lookup to work correctly. Use ExternalId so replays won’t duplicate. To correct any record, PUT with identifier=External Id. For multi‑record updates, use the bulk PUT endpoint (/activity/bulk?identifier=...). After each job, poll job status; record failures and repair the data (date formatting, missing lookups, etc.) before replay. Verification and reconciliationQuery for migrated records by External Id: Build a reconciliation report off activity timeline selecting: Spot check in C360 UI for correct author, attendees, and dates.Issues and how we mitigated themReparenting is not possible via API: We avoided “create then move” designs. When an activity needed to be associated to another entity, we re‑created at the correct entity and removed the original. CTA linking: We did not attempt CTA context or Linked CTA Id (unsupported via API). Attachments: Not supported. We skipped this entirely. Date parsing: We standardized on ISO 8601 with milliseconds for every record. This eliminated datetime errors. External attendees: Ensured Company Person records existed before load; included both person identity and company fields in the lookup. Field mismatches: We validated that every field name matched the Gainsight API name; otherwise, values are silently ignored.
If you are using Gainsight as your platform of choice and are involved in Digital Success, or Digital First as I like call it, you will want to watch this video.In this tips and tricks video, I explore leveraging Data Designer as a control plane to inform your leadership of planned outreach and data gaps, and to better determine when an email is sent.
Welcome to our community!
Status pages Known Issues Tracker (what is this?) |





If you ever had a profile with us, there's no need to create another one.
Don't worry if your email address has since changed, or you can't remember your login, just let us know at community@gainsight.com and we'll help you get started from where you left.
Else, please continue with the registration below.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.
Sorry, we're still checking this file's contents to make sure it's safe to download. Please try again in a few minutes.
OKSorry, our virus scanner detected that this file isn't safe to download.
OK