Download and backup most of the data from Copper CRM in JSON format.
in hubspot folder, you'll find an at-work toolset to upload Copper CRM data to HubSpot.
npm install
you need a Copper CRM API KEY / Copper CRM account email pair
COPPER_APIKEY=xxxxxxx [email protected] node index.js
It's possible for multiple reasons (timeouts, over rate limit) that the backup fails or misses items. It is safe to re-run it several times, already fetched items will be skipped. On it's own the script will retry on crashes as long as crashes are occuring less than every 5 seconds;
When everything as been backuped, (do the previous command to check).
You might want to remove empty files by running node clean.js.
Attention, after this if you restart the backup script all empty entries will be fetched once again.
File download is not possible with Copper Developer API !
The trick is to log-in on Copper and copy your company Id and Cookies.
Company Id can be found in the url https://app.copper.com/companies/{YOUR COMPANY ID}/app
To get the cookies, it depends on your Browser, on Chrome:
- Login Copper
- Right click on the page open
inspect - Go the network tag
- Reload Copper page
- In the
networktag click oncheckon the left pane - Go to the
Headerstab inRequest Headerssection and copy theCookiecontents.
It is a quite long string that looks like
_fbp=....; logged_in_copper_user=active; pnctest=1; ajs_anonymous_id=...; ajs_user_id=...; ajs_group_id=...; intercom-device-id-t10sa4e7=...; ...
Set the company code as environement variable COPPER_COMPANY and the cookies string as COPPER_COOKIES
run node files.js
After running clean scripts, re running the backup will not be able to find empty file and will re-dowload them. Do not use before being sure you have everything.
node clean/cleanFiles.js will remove all data files containing an empty array
node clean/removeEmptyfields.js will remove empty and unsued fields from the backup .. MAKE A BACKUP OF ./data before running!
This backup is not incremental it first fetches list of the different items then retrieve them one by one.
Data is saved in "data/" folder in json format.
An attempt of parallelization has been made with rate-limiting as Copper's API is limiting to 180 calls / minutes. The current logic is pretty weak and could be rewritten using a pool of calls and a fixed number of parrallel call to do.
Files that are links to external ressources such as Google Drive are saved with as data/files/{id}.json items;
- It seems nothing 😅