Depending on size, halve or quarter your tomatoes. Sauce tomatoes (Roma) are ideal, but any will work. I used a combo of Roma, Beefsteak, and (mostly) Cherry.
OPTIONAL: Smoke a tray's worth of the tomatoes. I cold smoked mine for a few hours over hickory. It gave it a subtle but delicious smoke flavor. Again, this is totally optional.
Add the tomatoes, salt, garlic, sugar, and onions to a pot and boil for 30 minutes.
Cool the mixture until you can send it safely through your food mill. I used the mixer attachment and it worked beautifully. If you don't have a food mill, you can peel and squeeze the tomatoes using the boiling water / ice bath method.
Return the now de-seeded and de-skinned tomato sauce to the pot and back onto the stove.
Continue to boil the sauce to reduce and thicken.
Meanwhile, in another non-reactive pot; heat the apple cider vinegar with all the remaining spice additions. Heat until the spices have infused into the vinegar.
Using a fine strainer to leave behind the whole spices, pour the vinegar into the tomato mix. If you don't have a strainer or tea-ball, you can wrap the spices in a cheesecloth satchel.
Continue to reduce until you reach the desired ketchup texture. This can take 4-6 hours. I've heard of people using a crock pot for this process.
Follow standard canning procedure if you want a shelf-stable product. Otherwise, cool and keep in the fridge.