Project Management migration
Field-level mapping, validation, and rollback between Shotgun and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Shotgun
Source
Asana
Destination
Compatibility
11 of 14
objects map 1:1 between Shotgun and Asana.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Shotgun to Asana is a schema translation, not a direct record copy. Shotgun organizes production around Shots, Assets, Sequences, and Versions with pipeline stages tied to entity-specific workflows; Asana organizes work around Tasks, Projects, Sections, and custom fields with no native equivalent for production entities. We map Shotgun Projects to Asana Teams or Projects, map Shots and Assets to Tasks with a production-kind custom field, preserve Version chains as ordered attachment sets, and rebuild pipeline stage workflows as custom single-select fields and Project Sections. Attachment blobs are staged in chunks against Shotgun's undocumented rate limits and reuploaded with Asana's 100 MB per-file ceiling flagged for review. Workflows, automations, and pipeline triggers do not migrate; we deliver a written inventory of every automation requiring rebuild in Asana Rules.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Shotgun object lands in Asana, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Shotgun
Project
Asana
Project or Team
1:1Shotgun Projects map to Asana Projects as the primary container. For studios with multiple distinct production groups, we map each Shotgun Project to an Asana Project within a Team. Project-level metadata including status, description, and start and due dates migrate as Project fields. The Asana Team structure is established first as the parent container so that Projects are created inside the correct Team scope.
Shotgun
Sequence
Asana
Project Section or Sub-Project
1:1Shotgun Sequences group Shots into editorial acts or sequences and carry sequence-level metadata. We map Sequences to Asana Project Sections within the same Project, preserving the sequence-to-shot relationship as Section membership. If the studio uses Sequences as independent planning units, we map them to Sub-Projects within the parent Project to maintain editorial hierarchy.
Shotgun
Shot
Asana
Task
1:1Shotgun Shots are the core production entity containing cut order, status, and assigned Tasks. We map Shots to Asana Tasks within the relevant Project or Section, preserving shot code as the Task name prefix (e.g., SEQ001_010) and shot description as the Task description field. Shot status maps to a custom single-select field sg_shot_status__c with values derived from the source pipeline stage list. Cut order is preserved as a custom number field sg_cut_order__c used for sorting.
Shotgun
Asset
Asana
Task
1:1Shotgun Assets (characters, props, environments, and other reusable production elements) map to Asana Tasks with a custom field sg_asset_type__c indicating the asset kind (character, prop, environment, vehicle, etc.). Asset status migrates to a custom single-select field sg_asset_status__c. The Asset-to-Shot link (which Shots reference which Assets) is preserved as a custom multi-select field sg_linked_shots__c or as a Tag on the Asset Task.
Shotgun
Task
Asana
Subtask
1:1Shotgun Tasks are assigned to Shots or Assets and contain pipeline stage, status, assignee, and due date. We map these to Asana Subtasks nested under the parent Shot or Asset Task, preserving Task status in a custom field sg_task_status__c, assignee as the subtask owner, and the pipeline stage as a custom field sg_pipeline_stage__c. Task priority from Shotgun maps to Asana Task Priority.
Shotgun
Version
Asana
Attachment or Comment Thread
lossyShotgun Versions are linked to Shots or Assets and represent review iterations. Asana has no native version-control equivalent, so we reconstruct the version chain as an ordered set of Task Attachments, with the version number and iteration notes preserved as a Comment on each version attachment. The most current Version is flagged with a custom field sg_current_version__c. Studios using Frame.io or Review 365 for review workflows may prefer to migrate Version metadata as task notes pointing to the external review platform.
Shotgun
Note
Asana
Comment
1:1Shotgun Notes attach to any entity and support threaded Replies. We map Notes to Asana Comments on the corresponding Task. Reply depth is preserved as a comment threading indicator. Shot or Asset linkage is preserved via the parent Task reference. Note author from Shotgun maps to the Comment author field; note creation timestamp migrates as the Comment timestamp.
Shotgun
Attachment
Asana
Attachment
lossyShotgun Attachments include uploaded files, render outputs, and published media linked to Shots, Assets, or Versions. We use Shotgun's download_attachment and get_attachment_download_url endpoints to extract files, then upload to Asana via the attachments endpoint. We flag any file exceeding 100 MB for manual handling because Asana's API and UI both reject attachments above that size. Files are staged in batches with download pacing to stay within Shotgun's undocumented rate limits. Attachment metadata (filename, upload date, linked entity) is preserved in a FlitStack AI manifest for reconciliation.
Shotgun
Thumbnail
Asana
Task Attachment
1:1Thumbnails are entity-level images for Shots, Assets, Versions, and Tasks. We extract them via upload_humbnail or download_attachment and re-associate them as Task Attachments in Asana, noting that Asana does not display thumbnails in list or board views the way Shotgun does. Studios using Asana primarily as a coordination layer rather than a review platform typically accept this trade-off. If visual reference is critical, we can attach the thumbnail as a pinned image to the Task description.
Shotgun
Custom Field
Asana
Custom Field
1:1Shotgun custom fields vary widely between sites in type, display name, and list values. We perform field-level mapping during scoping, matching each Shotgun custom field type to the closest Asana custom field type (enum for list values, text for freeform, number for numeric, date for date fields). Custom field schemas are created in the destination Asana Project before data import, and field values migrate as typed values against the destination field GID. Custom fields that have no Asana equivalent (e.g., Shotgun entity reference fields pointing to other Shots) are flagged for review.
Shotgun
Pipeline Status
Asana
Section or Custom Single-Select Field
lossyShotgun pipeline statuses are customizable per entity type and vary widely between studios. We map the source site's pipeline stage workflow to either Asana Project Sections (for sequential editorial stages like Assembly, VFX, Composite) or a custom single-select field sg_pipeline_stage__c on Tasks (for parallel workflow stages). We flag any statuses that reference pipeline logic beyond simple ordering, such as automated approval gates, and document them in the automation inventory for rebuild in Asana Rules.
Shotgun
Tag / Label
Asana
Tag
1:1Shotgun Tags are freeform labels applied to any entity. We preserve tag assignments as Asana Tags, mapping the Shotgun tag name directly to the Asana Tag name. Tag color is not carried over from Shotgun because Asana manages tag color internally. If tags represent classification categories (e.g., render priority, review status), we document the tag taxonomy for potential migration to custom single-select fields for stronger filtering in Asana.
Shotgun
User
Asana
User
1:1Shotgun Users are persons with roles and permissions. We migrate the user record including name and contact email, but role and permission sets are destination-specific. User-to-Task assignment migrates by resolving the Shotgun user to an Asana User by email match. Any Shotgun user without a matching Asana User is placed in a reconciliation queue for the customer's admin to provision before Task import resumes. Admin and supervisor roles require manual reassignment in Asana after migration.
Shotgun
Work Schedule
Asana
Working Days (Asana Calendar)
1:1Shotgun maintains work day rules via work_schedule_read and work_schedule_update. We extract the schedule configuration and attempt to apply it to the Asana Workspace's calendar working days settings, noting that Shotgun work schedules often encode studio-specific holidays and production blackouts that must be manually re-entered in Asana.
| Shotgun | Asana | Compatibility | |
|---|---|---|---|
| Project | Project or Team1:1 | Fully supported | |
| Sequence | Project Section or Sub-Project1:1 | Fully supported | |
| Shot | Task1:1 | Fully supported | |
| Asset | Task1:1 | Fully supported | |
| Task | Subtask1:1 | Fully supported | |
| Version | Attachment or Comment Threadlossy | Fully supported | |
| Note | Comment1:1 | Fully supported | |
| Attachment | Attachmentlossy | Fully supported | |
| Thumbnail | Task Attachment1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Pipeline Status | Section or Custom Single-Select Fieldlossy | Fully supported | |
| Tag / Label | Tag1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Work Schedule | Working Days (Asana Calendar)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Shotgun gotchas
Undocumented API rate limits cause migration failures
No bandwidth throttling on file attachment transfers
API authentication tied to individual user accounts
Asana gotchas
Automation rules have no export representation
API rate limits cap bulk migration throughput
Portfolios are view-only objects that do not hold data
Custom field enum options cannot be updated via API
Subtasks do not appear in project views by default
Pair-specific challenges
Migration approach
Discovery and migration scoping
We audit the source Shotgun site across Projects, entity counts (Shots, Assets, Sequences, Tasks, Versions, Notes), custom field schemas, pipeline status configurations, tag taxonomy, and attachment inventory including file size distribution. We identify oversized attachments (above 100 MB) during this phase and flag them for manual handling. We pair this with an Asana workspace audit to identify existing Teams, Projects, and custom fields that may conflict with the incoming migration. The discovery output is a written migration scope, object mapping specification, and an oversized-file report.
Schema setup and pipeline status design
We design the destination schema in Asana. This includes creating the Team and Project structure, defining custom fields for sg_shot_status__c, sg_asset_status__c, sg_pipeline_stage__c, sg_cut_order__c, sg_asset_type__c, and any entity-specific custom fields carried from Shotgun. Pipeline statuses from Shotgun are mapped to either Project Sections or custom single-select fields based on whether the pipeline stages represent sequential editorial phases or parallel workflow assignments. Custom fields are deployed to the target Asana Projects before any data import to ensure field GIDs are available during record mapping.
Credential provisioning and download pacing design
We provision a dedicated Shotgun integration account that will remain active throughout the migration window. We configure the Shotgun Python API client with conservative request pacing and exponential backoff to work within the undocumented rate limits. We design the download batch schedule for Attachments and Thumbnails to run during off-peak studio hours to avoid saturating the studio WAN link. This phase produces a migration runbook with credential details, pacing parameters, and batch schedules reviewed by the studio's pipeline team.
Sandbox migration and reconciliation
We run a full migration into a test Asana Workspace using a representative subset of production data. The studio's production coordinator and pipeline lead reconcile record counts (Projects in, Sequences in, Shots in, Assets in, Tasks in, Notes in), spot-check 25-50 random Shot and Asset records against the Shotgun source, verify pipeline stage mapping in Sections and custom fields, and validate attachment presence. Mapping corrections are applied here before production migration begins. This step also validates that oversized attachments are correctly identified and documented for manual handling.
Production migration in dependency order
We run production migration in record-dependency order: Shotgun Users (reconciled to Asana Users by email), Projects (to Asana Teams and Projects), Sequences (to Project Sections), Shots and Assets (to Tasks with sg_shot_status__c and sg_asset_type__c custom fields), Tasks (to Subtasks), Notes (to Comments), Versions (to Attachment sets and Comments), Attachments (in sized batches, excluding files above 100 MB), Thumbnails (as pinned Task Attachments), and Custom Field values (against the pre-deployed field GIDs). Each phase emits a row-count reconciliation report before the next phase begins. Credential validity is checked before each phase run.
Cutover, validation, and automation inventory delivery
We freeze Shotgun writes during cutover, run a final delta migration of any records modified during the migration window, then hand over Asana as the system of record for the migrated scope. We deliver the automation inventory document listing every Shotgun pipeline trigger and webhook with its trigger conditions, actions, and recommended Asana Rules equivalent. We support a one-week hypercare window where we resolve any reconciliation issues raised by the studio's team. We do not rebuild Shotgun automations or pipeline triggers as Asana Rules inside the migration scope; that work is handled by the studio's pipeline TD or a separate automation engagement.
Platform deep dives
Shotgun
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Shotgun and Asana.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Shotgun: Not publicly documented. Community reports confirm quota enforcement at the authorization endpoint with no self-service visibility into current usage..
Data volume sensitivity
Shotgun doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Shotgun to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Shotgun to Asana migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Shotgun
Other ways to arrive at Asana
Same-Project Management migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.