Pulling Tokens
Pulling fetches JSON token files from GitHub and creates or updates Figma Variables and Styles.
Time: 3 minutes Difficulty: Beginner
How Pull Works
When you click Pull, GitFig:
- Fetches the latest JSON files from your current branch
- Parses tokens based on the detected format
- Creates new Variable Collections (if they don't exist)
- Creates or updates Variables with the token values
- Updates the sync status
GitHub GitFig Figma
─────── ────── ─────
colors.json ────────► Parse JSON ────────► Variable Collection
Detect format ├── primary: #0066FF
Map values ├── secondary: #6B7280
└── background: #FFFFFF
Perform a Pull
Step 1: Check for Updates
Look at the Pull button. If there are new commits since your last sync, you'll see a badge:

Step 2: Click Pull
Click the Pull button to start syncing.

Step 3: Watch Progress
GitFig shows progress as it processes each file:

Step 4: Verify Results
After pull completes:
- Open the Variables panel in Figma
- Check that collections were created
- Verify variable values match your JSON
What Gets Created
Variables
| JSON Type | Figma Variable Type |
|---|---|
Color ($type: "color") | COLOR |
Number/Dimension ($type: "number") | FLOAT |
String ($type: "string") | STRING |
Boolean ($type: "boolean") | BOOLEAN |
Collections
Each mapped JSON file creates one Variable Collection, named after the file:
colors.json→ Collection named "colors"tokens/spacing.json→ Collection named "spacing"
Nested Tokens
Nested JSON structures become grouped variables:
{
"brand": {
"primary": { "$value": "#0066FF", "$type": "color" },
"secondary": { "$value": "#6B7280", "$type": "color" }
}
}
Creates:
brand/primarybrand/secondary
Pull Behavior
First Pull (New Collection)
On first pull, GitFig creates everything fresh:
- New Variable Collection
- New Variables for each token
- Descriptions from
$descriptionfields
Subsequent Pulls (Update)
On later pulls, GitFig updates existing elements:
| Scenario | Behavior |
|---|---|
| Token value changed | Update the Variable value |
| New token added | Create new Variable |
| Token removed | Variable remains (not deleted) |
| Token renamed | Creates new Variable (old remains) |
GitFig doesn't delete Variables that are removed from JSON. This prevents accidental data loss.
Change Detection
Commits Behind Badge
The badge on the Pull button shows how many commits are on GitHub since your last sync:
- No badge - You're up to date
- "3" - Three commits since last sync
Auto-Refresh
GitFig checks for new commits every 30 seconds. You can also click Refresh to check manually.
Conflict Warnings
If you have local changes in Figma that haven't been pushed, and GitHub also has new commits, you'll see a conflict warning:

Options:
- Pull anyway - Overwrites local changes with GitHub values
- Push first - Push your changes before pulling
- View diff - See what changed on GitHub
Troubleshooting
"No variables created"
- Check file mappings are configured
- Verify JSON format has
$valuefields - Check browser console for parsing errors
Wrong variable types
- Ensure
$typeis specified in JSON - Without
$type, GitFig guesses based on value
Variables not updating
- Make sure you're on the correct branch
- Check that the JSON file actually changed
- Try disconnecting and reconnecting
Pull is slow
- Large JSON files take longer to parse
- Many variables take time to create
- Network latency affects GitHub API calls
Next Steps
After pulling tokens: