Novus Documentation
← Documentation
Integrations

#1-Connecting Google Sheets to Novus

Learn how Google Sheets can be connected to Novus workflows to organize structured information such as ticket records, bug reports, applications, and support data. Understand spreadsheet and worksheet selection, column mapping, unique identifiers, create and update workflows, testing, permissions, and recommended configurations.

Google Sheets integration allows supported Novus workflows to send structured information into a spreadsheet.

Instead of manually copying information from Discord into a tracker, you can configure mappings between:

Novus Data

and:

Google Sheets Columns

For example:

Ticket ID

→ Ticket ID

Ticket Owner

→ Discord Member

Ticket Category

→ Category

Resolution

→ Resolution

This is especially useful for workflows where information needs to be filtered, reviewed, tracked, or reported outside Discord.

What Google Sheets Is Best For

Google Sheets works best with structured records.

Common examples include:

  • Support ticket tracking
  • Bug reports
  • Guild applications
  • Streamer applications
  • Partnership applications
  • Event registrations
  • Support statistics
  • Resolution tracking
  • Staff escalation tracking
  • Operational records

It is generally not the best destination for full ticket conversations.

For full transcripts or file archives, Google Drive is usually a better fit.

How the Integration Works

A typical workflow looks like:

Discord

Member creates a ticket

↓

Novus

collects ticket and form information

↓

Mapping

determines which values should be exported

↓

Google Sheets

receives the structured information

Depending on the enabled workflow, the external record may also be updated as the ticket progresses.

Before Connecting Google Sheets

Prepare the spreadsheet you want Novus to use.

For example:

Spreadsheet Name

Novus Support Tracker

Create a worksheet such as:

Tickets

Then create your headers:

Ticket IDMemberCategoryStatusCreated AtResolutionClosed At

Preparing the destination first makes mapping easier.

Use Clear Column Headers

Good column names:

  • Ticket ID
  • Member
  • Category
  • Issue Type
  • Status
  • Escalated
  • Handler
  • Created At
  • Resolution
  • Closed At

Avoid unclear names such as:

  • Data1
  • Value
  • Info
  • Column A
  • Other

Someone reviewing the spreadsheet later should immediately understand what each column represents.

Connecting Your Google Account

When Google Sheets integration is available and enabled for your Novus installation, connect the Google account that owns or has appropriate access to the intended spreadsheet.

Use an account appropriate for your support operation.

For example:

Organization Google Account

rather than a personal Google account containing unrelated private files.

The exact Google resources Novus can use depend on the permissions granted to the connected account.

Grant Only Necessary Access

The connected account should have enough access for the workflow to work.

For example, if Novus needs to create or update spreadsheet rows, the account must be able to edit the target spreadsheet.

Avoid granting unnecessary access to unrelated organizational resources.

Selecting a Spreadsheet

After connecting the appropriate Google account, select the spreadsheet intended for the workflow.

Example:

Connection

Support Google Account

Spreadsheet

Novus Support Tracker

Do not select a spreadsheet simply because it is the first one available.

Confirm that it is the correct production destination.

Selecting a Worksheet

A spreadsheet can contain multiple worksheets.

For example:

Novus Support Tracker

may contain:

  • General
  • Technical
  • Payment
  • Applications

Your integration needs to know which worksheet should receive the data.

Single Worksheet Setup

A smaller server may use:

Spreadsheet

Novus Support Tracker

Worksheet

Tickets

All supported tickets are stored in the same table.

The Category column identifies the ticket type.

Example:

Ticket IDCategoryStatus
NOVUS-1001GeneralResolved
NOVUS-1002TechnicalOpen
NOVUS-1003PaymentEscalated

This is usually the easiest configuration to maintain.

Multiple Worksheet Setup

Larger communities may separate workflows.

For example:

Spreadsheet

Novus Support Tracker

with:

General

Technical

Payment

Applications

Then configure category-to-worksheet mappings.

For example:

Novus CategoryWorksheet
General SupportGeneral
Technical SupportTechnical
Payment SupportPayment
ApplicationsApplications
Understanding Field Mapping

Field mapping tells Novus where each value belongs.

For example:

Novus SourceGoogle Sheets Column
Ticket IDTicket ID
Ticket OwnerMember
Ticket CategoryCategory
Ticket StatusStatus
Created DateCreated At
ResolutionResolution
Closed DateClosed At

The names do not need to be identical.

For example:

Novus

Ticket Owner

can map to:

Google Sheets

Discord User

What matters is that the mapping points to the correct destination.

Ticket Fields vs Form Fields

A ticket may contain two major types of structured information.

System Fields

Generated or maintained by the ticket workflow.

Examples:

  • Ticket ID
  • Ticket Owner
  • Ticket Category
  • Created At
  • Status
  • Closed At
  • Resolution
  • Escalation Status

Form Fields

Provided by the member during ticket creation.

Examples:

  • Issue Type
  • Bug Title
  • Guild Name
  • Streamer Platform
  • Payment Reference

Both can be useful in Google Sheets.

Example Technical Support Mapping

Suppose the form contains:

Issue Type

Problem Description

Error Message

Your spreadsheet could contain:

Ticket IDMemberIssue TypeProblemErrorStatus

Mapping:

Novus SourceSheet Column
Ticket IDTicket ID
Ticket OwnerMember
Form: Issue TypeIssue Type
Form: Problem DescriptionProblem
Form: Error MessageError
Ticket StatusStatus
Example Bug Report Configuration

Create a spreadsheet:

Novus Development Tracker

Worksheet:

Bug Reports

Headers:

Report IDReporterTitleDescriptionStepsAreaFrequencyStatusResolution

Then configure:

Novus SourceGoogle Sheets
Ticket IDReport ID
Ticket OwnerReporter
Form: Bug TitleTitle
Form: DescriptionDescription
Form: Steps to ReproduceSteps
Form: Affected AreaArea
Form: FrequencyFrequency
Ticket StatusStatus
ResolutionResolution
Example Workflow

Member selects:

Report Bug

↓

Form asks:

Bug Title

Launcher closes after login

Description

The launcher disappears after I press Start.

Affected Area

Launcher

Frequency

Always

↓

Novus creates the ticket.

↓

Google Sheets receives a structured Bug Report record when the configured integration trigger runs.

Instead of staff manually copying the report, the information is already organized.

Example Streamer Application

Create:

Spreadsheet

Community Applications

Worksheet

Streamers

Columns:

Application IDDiscord UserStreamer NamePlatformChannelScheduleStatus

Mapping:

Novus SourceSheet Column
Ticket IDApplication ID
Ticket OwnerDiscord User
Form: Streamer NameStreamer Name
Form: PlatformPlatform
Form: Channel URLChannel
Form: ScheduleSchedule
Ticket StatusStatus

This turns the Ticket Form into a structured application record.

Example Guild Application

A Guild Application could use:

Novus SourceSheet Column
Ticket IDApplication ID
Ticket OwnerDiscord Contact
Form: Guild NameGuild
Form: Guild LeaderGuild Leader
Form: Active MembersMember Count
Form: Active ScheduleSchedule
Ticket StatusStatus

Staff can then filter applications without manually reviewing every Discord ticket just to find basic information.

Use Ticket ID as the Primary Identifier

Whenever possible, use:

Ticket ID

as the unique record identifier.

For example:

NOVUS-1084

This makes it easier to locate the same ticket later.

Why Not Use Discord Display Name?

A member's display name can change.

For example:

Today:

PlayerOne

Next month:

PlayerOneRF

If your spreadsheet relies only on the display name, identifying historical records becomes harder.

Ticket IDs are better for identifying individual support records.

Create vs Update

One of the most important integration concepts is deciding whether an event should:

Create a new row

or:

Update an existing row

These are not the same operation.

Create Example

When:

Ticket Created

Novus may create:

Ticket IDCategoryStatus
NOVUS-1084TechnicalOpen

This establishes the external record.

Update Example

Later:

Ticket Escalated

The same row can conceptually become:

Ticket IDCategoryStatus
NOVUS-1084TechnicalEscalated

Then after resolution:

Ticket IDCategoryStatus
NOVUS-1084TechnicalResolved

The workflow should update the existing ticket record rather than creating unnecessary duplicates when update behavior is supported.

Why a Unique Key Matters

To update a record, the integration needs a way to identify it.

For example:

Find row where:

Ticket ID = NOVUS-1084

Then update:

Status = Resolved

Without a reliable key, the system may not know which row belongs to the ticket.

Avoid Duplicate Rows

A poorly designed workflow might create:

Ticket IDStatus
NOVUS-1084Open
NOVUS-1084Escalated
NOVUS-1084Resolved
NOVUS-1084Closed

This may be useful for an intentional event log, but it is usually undesirable for a ticket tracker.

A normal tracker would usually maintain one primary row per ticket.

Tracker vs Event Log

These are two different spreadsheet designs.

Ticket Tracker

One row per ticket.

Example:

Ticket IDStatusResolution
NOVUS-1084ResolvedLauncher configuration fixed

Event Log

Multiple rows per ticket.

Example:

Ticket IDEvent
NOVUS-1084Created
NOVUS-1084Escalated
NOVUS-1084Resolved
NOVUS-1084Closed

Choose the design that matches your reporting needs.

Recommended Default

For most communities:

Ticket Tracker

is easier to manage.

Use:

One ticket = one row

and update that row as the workflow progresses when your enabled integration supports updates.

Status Mapping

Keep status values consistent.

For example:

  • Open
  • AI Handling
  • Staff Handling
  • Escalated
  • Resolved
  • Unresolved
  • Inactive
  • Closed

Avoid inconsistent variations such as:

Done

completed

Finished

RESOLVE

if they all mean the same thing.

Consistent statuses make filtering and reporting easier.

Boolean Mapping

Some values may be simpler as:

Yes / No

For example:

Escalated

Ticket IDEscalated
NOVUS-1001No
NOVUS-1002Yes

This is easier to filter than storing long explanations in the same column.

Multi-Choice Form Mapping

Suppose a form asks:

Affected Platforms

and allows:

  • Windows
  • Android
  • Website

A member selects:

Windows + Website

The mapped value may be represented as a combined value such as:

Windows, Website

depending on the integration's supported output format.

Design the destination column with multi-value responses in mind.

Optional Field Mapping

Some form fields may be optional.

For example:

Error Code

A member may leave it blank.

Your integration should expect valid empty values rather than requiring fake placeholders.

Avoid forcing members to enter:

N/A

unless your workflow genuinely requires it.

Do Not Map Every Field

A Technical Support ticket may contain dozens of pieces of information throughout the conversation.

Your Sheet probably only needs:

  • Ticket ID
  • Member
  • Issue Type
  • Status
  • Escalation
  • Resolution
  • Dates

Keep the spreadsheet focused on its purpose.

Full Conversations Do Not Belong in Normal Tracker Rows

Avoid mapping an entire ticket transcript into:

Conversation

inside one Google Sheets cell.

This becomes difficult to:

  • Read
  • Filter
  • Search
  • Maintain
  • Secure

Use Google Drive or your configured transcript destination for full archives.

Linking Sheets and Drive

When both integrations are available, you can use:

Google Sheets

as the index

and:

Google Drive

as the archive.

For example:

Ticket IDStatusTranscript
NOVUS-1084ResolvedArchive Reference

The corresponding transcript can live in the configured Drive destination.

Different Categories Can Use Different Sheets

You do not need to force every workflow into one spreadsheet.

For example:

Technical Support

→ Support Operations

Bug Report

→ Development Tracker

Streamer Application

→ Community Applications

Payment Support

→ Restricted Transaction Tracker

This can improve privacy and staff access control.

Payment Data Requires Extra Care

Do not automatically map entire Payment Support conversations.

Store only information required for your operation.

For example:

FieldDestination
Ticket IDTicket ID
MemberDiscord Member
Payment ReferenceReference
StatusStatus
Verified ByStaff
Closed AtClosed At

Avoid storing unnecessary payment information.

Spreadsheet Permissions Matter

Google Sheets has its own access controls.

A private Discord ticket exported to a spreadsheet that everyone can access is no longer private.

Always review:

  • Spreadsheet owner
  • Editors
  • Viewers
  • Shared links
  • Organization access

Discord permissions do not automatically protect exported Google data.

Separate Sensitive Worksheets When Necessary

Instead of placing everything in:

Novus Support Tracker

consider:

General Support Tracker

and a separate restricted:

Transaction Tracker

This makes access control easier.

Test With a Temporary Spreadsheet

Before using your production spreadsheet, create:

Novus Integration Test

Add simple columns:

Ticket IDMemberCategoryStatus

Then map only those fields.

Create one test ticket and verify the result.

Once the basic workflow works, add more fields.

Test One Mapping at a Time

If you configure 20 mappings immediately and something fails, identifying the problem becomes difficult.

A better process is:

  1. Map Ticket ID.
  2. Test.
  3. Add Member.
  4. Test.
  5. Add Category.
  6. Test.
  7. Add form fields.
  8. Test.
  9. Add status updates.
  10. Test.

This isolates configuration problems.

Test Realistic Data

Do not test everything using:

test

Use realistic examples such as:

Bug Title

Launcher crashes after selecting server

Affected Area

Launcher

Description

Launcher closes after server selection without displaying an error.

This helps reveal:

  • Text-length issues
  • Mapping mistakes
  • Formatting problems
  • Multi-choice behavior
  • Empty-field handling
Common Mapping Problem — Wrong Worksheet

Symptom:

Ticket data appears, but in the wrong place.

Check:

Category

↓

Spreadsheet

↓

Worksheet

Make sure the correct destination is selected for the workflow.

Common Mapping Problem — Missing Column

Suppose the mapping expects:

Resolution

but the worksheet header was changed to:

Final Result

Depending on the implemented mapping method, the destination may no longer match the configured field.

When changing spreadsheet structure, review the Novus mapping afterward.

Common Mapping Problem — Renamed Worksheet

If:

Technical

becomes:

Tech Support

an existing configuration referencing the old worksheet may require updating.

Avoid casually renaming production resources without reviewing connected workflows.

Common Mapping Problem — Duplicate Records

If the same Ticket ID appears several times unexpectedly, review whether the workflow is configured to:

Create

when it should:

Update

Also verify that the configured unique key remains available.

Common Mapping Problem — Blank Values

If one column remains empty, check:

  • Is the Novus source correct?
  • Is the form field optional?
  • Was the member actually asked that field?
  • Does the source belong to the selected Ticket Category?
  • Is the destination column correct?

A blank value does not always mean the integration failed.

Common Mapping Problem — Permission Error

If Novus can see a spreadsheet but cannot update it, review the connected account's access.

It may have:

Viewer

permission instead of:

Editor

permission.

Common Mapping Problem — Old Form Mapping

Suppose you originally had:

Form Field

Game Issue

and later replaced it with:

Issue Type

Existing mappings may still point to the old field.

Whenever you significantly modify a Ticket Form, review connected mappings.

Form Changes Can Affect Integrations

This is an important maintenance rule.

Changing:

Ticket Form

can affect:

Google Sheets Mapping

For example:

Guild Members

is renamed to:

Active Member Count

Review whether your existing mapping still points to the intended source.

Spreadsheet Changes Can Affect Novus

The reverse is also true.

Changing:

Google Sheets

can affect:

Novus Integration

For example:

  • Worksheet deleted
  • Column removed
  • Spreadsheet moved or access changed
  • Connected account loses permission

Treat integration configuration and destination structure as connected components.

Recommended Support Tracker

For general support operations:

Spreadsheet

Novus Support Operations

Worksheet

Tickets

Recommended columns:

Column
Ticket ID
Member
Category
Issue Type
Status
Escalated
Handler
Created At
Resolution
Closed At

This is a strong starting point without collecting unnecessary conversation data.

Recommended Bug Tracker

Spreadsheet

Novus Development

Worksheet

Bug Reports

Columns:

Column
Report ID
Reporter
Title
Description
Steps
Component
Frequency
Status
Resolution
Reported At
Closed At
Recommended Application Tracker

Spreadsheet

Novus Applications

Worksheets:

  • Streamers
  • Guilds
  • Partners

Example Streamer columns:

Column
Application ID
Discord User
Streamer Name
Platform
Channel
Schedule
Status
Submitted At
Reviewed At
Recommended Integration Workflow

For most ticket tracking use cases:

Ticket Created

↓

Create Sheet record

↓

Ticket Activity

↓

Update selected operational fields when needed

↓

Staff Escalation

↓

Update escalation information

↓

Resolution

↓

Update status and resolution

↓

Ticket Closed

↓

Finalize closing information

This gives staff one structured record for the complete ticket lifecycle.

Google Sheets Is Not a Backup of Discord

A spreadsheet integration should have a specific operational purpose.

Do not assume that exporting selected ticket fields creates a complete backup.

A proper ticket archive may require:

  • Transcript
  • Attachments
  • Metadata
  • Closing information

Those belong in the appropriate transcript/archive workflow.

Google Sheets Is Not the Knowledge Base

Do not automatically treat every spreadsheet row as verified AI Knowledge.

For example:

NOVUS-1084 | Launcher | Resolved

does not contain enough verified information to teach Novus how to solve the problem.

The Knowledge Base should contain the actual reusable verified solution.

Recommended Separation

Use:

Google Sheets

for:

What tickets exist and what happened to them?

Use:

Google Drive

for:

Where is the archived file or transcript?

Use:

Knowledge Base

for:

How should this problem be solved next time?

This distinction keeps Novus organized.

Production Checklist

Before using a Google Sheets workflow with real members, verify:

  • Correct Google account is connected.
  • Correct spreadsheet is selected.
  • Correct worksheet is selected.
  • Connected account has required access.
  • Column headers are clear.
  • Ticket ID is mapped.
  • Unique record strategy is defined.
  • Create vs update behavior is understood.
  • System fields map correctly.
  • Form fields map correctly.
  • Optional fields are handled.
  • Multi-choice values are handled.
  • Status values are consistent.
  • Duplicate records are not created unintentionally.
  • Sensitive fields are excluded.
  • Spreadsheet permissions are appropriate.
  • Ticket Form changes are reflected in mappings.
  • Spreadsheet changes are reflected in Novus.
  • Test tickets successfully reach the expected destination.
  • Integration failures can be identified.
  • Production data is not being sent to a temporary test spreadsheet.
Recommended First Configuration

If you are setting this up for the first time, keep it simple:

Spreadsheet

Novus Support Tracker

Worksheet

Tickets

Mapping

Ticket ID → Ticket ID

Ticket Owner → Member

Ticket Category → Category

Ticket Status → Status

Created At → Created At

Resolution → Resolution

Closed At → Closed At

Once that works reliably, add category-specific form fields and more advanced mappings.

Next Step

Continue to Connecting Google Drive to Novus.