Skip to content

Maverick Ticket Type Mappings

Overview

The Maverick ticket type mapping system allows you to manually configure how ticket categories from Maverick Payments are mapped to your Pulse ticket types. This gives you full control over ticket organization and eliminates automatic ticket type creation.

Why Use Manual Mapping?

Previous Auto-Creation Issues:

  • Automatically created “Maverick: [Category]” ticket types
  • Caused naming conflicts and database errors
  • No user control over organization

Benefits of Manual Mapping:

  • Map multiple Maverick categories to a single Pulse ticket type
  • Use existing ticket types and workflows
  • No duplicate ticket type creation
  • Better integration with your support process

Configuration Steps

1. Access Integration Settings

Navigate to Admin → Settings → Integrations → Maverick

2. Configure Mappings

In the Ticket Type Mappings section, you’ll see a table with all Maverick categories:

Maverick CategoryPulse Ticket TypeCategoryStatusActions
Chargebacks[Dropdown][Dropdown]Unmapped[Save]
Account Changes[Dropdown][Dropdown]Mapped[Delete]

For each category:

  1. Select a Pulse ticket type from the dropdown
  2. Select the appropriate category classification
  3. Click the checkmark to save
  4. Status changes to “Mapped”

3. Sync Tickets

Once mappings are configured:

  • Sync tickets from Maverick
  • Tickets use your configured mappings
  • Unmapped tickets use default “Unmapped Maverick Tickets” type

API Endpoints

List Mappings

Terminal window
GET /api/integrations/maverick/ticket-type-mappings

Headers:

  • Authorization: Bearer {token}
  • x-account-id: {accountId}

Response:

{
"data": [
{
"id": 1,
"maverickCategoryId": 123,
"maverickCategoryName": "Chargebacks",
"pulseTicketTypeId": "tt-xyz",
"pulseCategoryEnum": "billing",
"ticketType": {
"name": "Chargeback Disputes",
"category": "billing",
"isActive": true
}
}
],
"totalCount": 15
}

Create Mapping

Terminal window
POST /api/integrations/maverick/ticket-type-mappings

Request Body:

{
"maverickCategoryId": 123,
"maverickCategoryName": "Chargebacks",
"pulseTicketTypeId": "tt-xyz",
"pulseCategoryEnum": "billing"
}

Response:

{
"data": {
/* Created mapping */
},
"message": "Ticket type mapping created successfully"
}

Update Mapping

Terminal window
PUT /api/integrations/maverick/ticket-type-mappings

Request Body:

{
"id": 1,
"pulseTicketTypeId": "tt-abc",
"pulseCategoryEnum": "technical"
}

Delete Mapping

Terminal window
DELETE /api/integrations/maverick/ticket-type-mappings?id=1

Get Categories with Status

Terminal window
GET /api/tickets/maverick/categories

Response:

{
"data": [
{
"id": 123,
"name": "Chargebacks",
"group": "Risk",
"mapping": {
"id": 1,
"pulseTicketTypeId": "tt-xyz",
"pulseTicketTypeName": "Chargeback Disputes",
"pulseCategoryEnum": "billing",
"isMapped": true
}
}
],
"mappedCount": 15,
"unmappedCount": 34
}

System Warning Banner

When unmapped tickets are detected after a sync, a yellow warning banner appears at the top of the application:

Banner Shows:

  • Number of unmapped tickets
  • Message explaining the issue
  • “Configure Mappings” button to open settings
  • Dismiss button (X)

Behavior:

  • Appears only when unmapped tickets exist
  • Visible to account admins only
  • Auto-dismisses when all categories are mapped
  • Can be manually dismissed

Event: system_warning_maverick_unmapped_tickets

Ticket Sync Behavior

Mapped Categories

Tickets from mapped Maverick categories:

  • Use the configured Pulse ticket type
  • Inherit category from mapping
  • Integrate with existing workflows

Unmapped Categories

Tickets from unmapped categories:

  • Use default “Unmapped Maverick Tickets” type
  • Category set to “technical”
  • Appear at bottom of ticket type list (sort order 9999)
  • Trigger system warning notification

Default Unmapped Type

The system automatically creates a default ticket type:

  • Name: “Unmapped Maverick Tickets”
  • Purpose: Temporary holding type for unmapped tickets
  • Category: Technical
  • Auto-created: First sync with unmapped categories

Best Practices

  1. Map Active Categories First

    • Focus on categories that receive frequent tickets
    • Leave rarely-used categories unmapped initially
  2. Group Similar Categories

    • Map multiple related Maverick categories to the same Pulse ticket type
    • Example: “Account Change” and “Bank Change” → “Account Updates” type
  3. Use Descriptive Names

    • Ensure Pulse ticket type names clearly indicate purpose
    • Makes mapping selection easier
  4. Monitor System Warnings

    • Address unmapped ticket warnings promptly
    • Configure mappings to remove banner
  5. Review Regularly

    • Maverick may add new categories over time
    • Periodically check for unmapped categories

Troubleshooting

”Mapping already exists” Error

Cause: Trying to create a duplicate mapping for a Maverick category

Solution:

  • Use UPDATE instead of CREATE
  • Or delete existing mapping first

Tickets Not Using Mapping

Cause: Mapping created after tickets were synced

Solution:

  • Re-sync tickets from Maverick
  • System will update ticket types based on new mappings

Cause: Unmapped tickets still exist

Solution:

  1. Check for unmapped tickets: Visit ticket list, filter by type “Unmapped Maverick Tickets”
  2. Map all active categories
  3. Re-sync tickets
  4. Banner auto-dismisses on successful sync

Permission Denied

Cause: User is not an account admin

Solution:

  • Only account admins can manage mappings
  • Contact your account administrator

Code Examples

List All Mappings

const response = await fetch(
"/api/integrations/maverick/ticket-type-mappings",
{
headers: {
Authorization: `Bearer ${token}`,
"x-account-id": accountId,
},
}
);
const { data, totalCount } = await response.json();
console.log(`Found ${totalCount} mappings`);

Create Mapping

const mapping = {
maverickCategoryId: 123,
maverickCategoryName: "Chargebacks",
pulseTicketTypeId: "tt-xyz",
pulseCategoryEnum: "billing",
};
const response = await fetch(
"/api/integrations/maverick/ticket-type-mappings",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"x-account-id": accountId,
"Content-Type": "application/json",
},
body: JSON.stringify(mapping),
}
);
const result = await response.json();
console.log(result.message); // "Ticket type mapping created successfully"

Check Category Mapping Status

const response = await fetch("/api/tickets/maverick/categories", {
headers: {
Authorization: `Bearer ${token}`,
"x-account-id": accountId,
},
});
const { data, mappedCount, unmappedCount } = await response.json();
console.log(`Mapped: ${mappedCount}, Unmapped: ${unmappedCount}`);
// Find unmapped categories
const unmapped = data.filter((cat) => !cat.mapping.isMapped);
console.log(
"Unmapped categories:",
unmapped.map((c) => c.name)
);