External ID's do not have to be assigned.
They are only used if you import or export data.
If you import data, you supply the External ID so that Odoo knows if it should create or update during import. If it can't find the External ID, it will create a new record when it imports that line. If I can find the External ID, it will update an existing record when it imports that line.
If you export data, with "
I want to update data (import-compatible export)" checked, Odoo will assign an External ID automatically.
If you are not importing or exporting data, you don't need to worry about External ID at all.
The External ID field has two pieces, a prefix and a suffix, separated by a period (.) - and they must be unique. For this reason we recommend using the name of the model and a number, with perhaps the first piece being the name of the External software you are importing from.
When Odoo assigns an External ID, it will always use __export__ as the prefix and the name of the model in the suffix (followed by a number and a UUID hash).
See also https://www.odoo.com/documentation/18.0/applications/essentials/export_import_data.html#import-from-another-application
Both the Company and the Contact need their own External ID. The Contact is the linked to the Company via the parent_id field. Don't forget the Is a Company field:
Example import:

Mapping during import:
