Batch upload function

Feature request template:

What Wildbook should this feature be in?
Manta Matcher

What would you like to see?
Would it be possible to resurrect the “Batch Upload”? With the help of Giles Winstanley we have previously uploaded large numbers of encounters (500+) after large chunks of time in the field with minimal internet access. Is there any way of being able to do this in the future?

How would this functionality help you?
I have ~900 manta photos to upload (already matched offline), it would save myself and the volunteers a huge amount of manual upload time. Thanks!

Hi Stephanie,

We do have a Bulk Import feature that we maintain across Wildbooks. For whatever reason, it was not exposed on MantaMatcher, and I have now made it visible for users after login. Just select “Bulk Import” from the “Submit” menu.

This is not Stan’s code. This uses a standard import format spreadsheet, which is common across all Wildbooks. I have attached an empty, full spreadsheet here as well as a simple one with a few lines populated as an example. Not all lines are required.

Would you be able to use this format?


Thanks for this Jason, will certainly give it a go! I can’t seem to access the attachments, are you able to email them to me please?

Just sent separately via email. Please respond here if you have any questions about it. Thank you!

Hi Jason,

I’ve got a couple of questions about the bulk import spreadsheet for MantaMatcher:

  1. In the ‘Encounter.locationID’ field, how would I write Indonesia - Raja Ampat? (i.e. dash or comma or something else to separate the region)

  2. Can you please provide the field codes for the following:

  • photographer name
  • photographer email
  • status (i.e. alive/dead)
  • additional comments
  • noticeable scarring (is this the same as ‘Encounter.distinguishingScar’)
  • other email address to inform


Hi again,

Can you please also provide field codes for ‘disc width’ and ‘matched by’ (i.e. 'Unmatched first encounter, Visual inspection etc).


@argeswaraj this might be relevant regarding iot as well

Yes, happy to!

In the ‘Encounter.locationID’ field, how would I write Indonesia - Raja Ampat?
(i.e. dash or comma or something else to separate the region)

You can see all of the locationIDs defined for MantaMatcher here. The “id” value is the one you should populated the fields with. The “name” column makes it user friendly but should NOT be used.

So this line:
{ “name”:“Raja Ampat”, “id”:“Indonesia-Raja Ampat”, “locationID”:[] },

means you should use: Indonesia-Raja Ampat.

The mapping file makes it easy to reorganize and rename, but as long as the ID value stays the same, we don’t have to change any data.

For photographer name/photographer email, use:

(we programmers start counting at 0 oddly enough)

and number upward if there are more photographers, such as Encounter.photographer1.emailAddress, Encounter.photographer2.emailAddress, etc.

  • status (i.e. alive/dead)*

This will be Encounter.livingStatus with exact values “alive” and “dead”. For some reason we don’t currently import it. I have filed bug WB-466, and I am going to fix it myself. SO please plan on using it. I’ll reply here when it’s fixed.

  • additional comments

Please use: Encounter.occurrenceRemarks

  • noticeable scarring (is this the same as ‘Encounter.distinguishingScar’)

That is the correct field. Unless you want this applied as a Keyword to a specific photo? The it would be Encounter.keywordX (e.g., Encounter.keyword0) to correspond to column Encounter.mediaAssetX (e.g., Encounter.mediaAsset0)

  • other email address to inform

I created WB-467. Checking how hard it would be to add this quickly…

Please note, we have a spreadsheet with more field descriptions here:

Encounter.measurement0 for the disc width value on MantaMatcher.

and ‘matched by’ (i.e. 'Unmatched first encounter, Visual inspection etc).

Filed as WB-468. Working on it…

oh yay! thanks ellie!

Hi Jason. I was wondering in which column I could put the dive site name of the encounter? I tried doing the bulk upload yesterday with Elitza, and we had trouble in the location part.


Great, thanks so much for your help Jason!

WB-466, WB-467, WB-468 should now be implemented on, allowing for the additional field imports.

I recommend Encounter.verbatimLocality


Thanks for that Jason, what are the field codes for ‘matched by’ and ‘Other email’ please?
I checked the google sheet but couldn’t see them

Hey Jason, just wondering. I uploaded a sheet, but when it went to the bulk upload, not all of the columns are visible/detected. Why is this? Thanks!

Screen Shot 2020-06-03 at 11.32.49

Hi Janis,

There are a few reasons I think.

We don’t support the Encounter.keyword00 format. So please label Encounter.keyword0X as Encounter.keywordX. For example, Encounter.keyword5 should be used and not Encounter.keyword05.

The Encounter.mediaAssetX fields are being called out because - starting with Encounter.mediaAsset0 - there don’t appear to be any valid values in them. If even one valid value is found, the column won’t appear in the list. Did you intend to import photos? If so, please send your spreadsheet directly to and cc and we can review it.

For Encounter.measurement, I think the supported column for turtles should be:


@colin, does that sound right?


I just confirmed with Colin. For IoT, we have these defined:


So you can import via either the measurement number or its name. For example:

  • Encounter.measurement2 or Encounter.carapacewidth
  • Encounter.measurement4 or Encounter.weight