Automation of Amazon Shipping Label Generation Using SP API
Worldwide
Overview I run an Amazon business that dropships from several different suppliers, and I'm hiring a developer to build a script that automates my shipping label process from start to finish. I currently buy every label by hand, so as the business grows I need this handled automatically. The script uses the Amazon SP-API to buy the correct shipping label for each order, generate the label (and, for one supplier, packing slip) PDFs, name and file them by supplier, and log the results. Every per-product rule, including which supplier ships it, the allowed carriers, package size and weight, and state restrictions, is driven by a master Google Sheet, so I can add new products over time without the script being re-coded. It should run unattended on a schedule, with no input from me. A successful build lets me open a supplier's folder, find correctly named labels ready to send, and trust that any order the script couldn't handle was safely skipped and logged for me to review. The full technical requirements are below. Please read through them before submitting a proposal. Core Workflow For each order, the script should read that product's row from the master sheet and use it to purchase the correct shipping label automatically, following all of the rules below. 1. Ship-From Address by Supplier Different ASINs ship from different suppliers. Pull the correct "Ship-From" address based on which supplier handles that specific ASIN. The supplier address in the sheet matches the "Ship-From" address I have set in Amazon for that ASIN. 2. Allowed Carriers per ASIN Only the allowed shipping carrier(s) can be purchased for a given ASIN. Some ASINs can use USPS or UPS, some are USPS-only, some are FedEx-only, and so on, so this can't be a blanket setting. The allowed carrier(s) for each ASIN are listed in the sheet. 3. Shipping Option Selection (Cost vs Speed) By default, purchase the cheapest available label. The exception is when a faster option is only slightly more expensive: - If an option arrives 1 day sooner than the cheapest and costs less than $0.50 more, choose it instead - If an option arrives 2 days sooner and costs less than $1.00 more, choose it instead - Continue this pattern, allowing an extra $0.50 of cost for each additional day saved - If no faster option meets its threshold, purchase the cheapest option. If two different faster options both qualify (say one is 1 day sooner and another is 3 days sooner and both are within budget, purchase the one that arrives the soonest and within budget. 4. Package Dimensions and Weight - Apply the correct preset package dimensions and weight for each ASIN before purchasing the label - Quantity greater than 1: for each additional unit, add a set per-unit weight increase (this amount is defined per ASIN in the sheet) - Larger package once a threshold is passed: once the order quantity passes a set unit count for that ASIN, switch to a different, larger package dimension that I have set for that ASIN in the sheet. This threshold and the larger dimension are different for each ASIN. 5. Orders With Multiple Different Products When a single order contains more than one different product, first identify whether all products ship from the same supplier or from different suppliers: - All from the same supplier: purchase one label for the entire order. - Weight: set the package weight to the combined total weight of every product in the order, using each ASIN's weight from the sheet and still applying the per-unit weight increases from Section 4 for any item with a quantity greater than 1. - Package size: determine the box size in this order: 1. Among all products in the order, find the package dimension with the greatest volume. This is the starting package size. 2. Decide whether to upgrade that starting size to a larger dimension: - If only one product in the order has that greatest-volume dimension, compare that ASIN's ordered quantity against its unit-count threshold. If it passes, upgrade to that ASIN's larger dimension. - If two or more products in the order share that same greatest-volume dimension, add together the ordered quantities of all of them. Compare that combined quantity against the unit-count threshold of each of those ASINs. If it passes any of their thresholds, upgrade to the larger dimension. If more than one of those ASINs crosses its threshold and they list different larger dimensions, use the one with the greatest volume. - Any product from a different supplier: do not purchase any label for that order. Leave it for me to handle manually, and note it in the log as skipped. 6. State Shipping Restrictions Some suppliers can't ship certain products to certain states while others can. The sheet lists the states each ASIN cannot be shipped to. - If the customer's shipping address is in a state that ASIN cannot ship to, use the alternate supplier I've listed in the sheet for that ASIN to purchase the label instead (using that supplier's Ship-From address) - If the alternate supplier column shows "None," do not purchase a label for that order and flag it in the log. 7. Multiple Labels for High-Quantity Orders For specific ASINs, I set a maximum unit quantity allowed per shipping label in the sheet. If an order's unit quantity for that ASIN is greater than that maximum, purchase multiple separate labels, splitting the quantity so each label covers up to the max allowed (with the final label covering any remainder). Set the unit quantity on each label to the max allowed per label. 8. Label and Packing Slip PDFs - Base filename: each label PDF is named from the filename I've set for that ASIN in the sheet (based on the product name), assembled using the rules below. - Quantity prefix: show the total number of individual products for that product in front of its name. - A leading number in the sheet filename is the listing's pack size, meaning how many of the product come in one unit of that listing. For example, "2productname" is a 2-pack, while a filename with no leading number is a single-unit listing (a pack size of 1). - Multiply the quantity ordered by that pack size to get the total number of individual products, then place that total in front of the product name with the leading pack-size number removed. - Apply this prefix whenever the total is greater than 1. A single unit of a single-unit listing keeps just the plain product name with no number. - Examples: 5 units of "productname" becomes "5 productname" (5 x 1 = 5). 5 units of "2productname", a 2-pack, becomes "10 productname" and not "5 2productname" (5 x 2 = 10). - Multiple different products in one order (same supplier): when a single order contains more than one different product from the same supplier (the one combined label described in Section 5), join the products' filenames with " + " between them, each built using the quantity prefix above. For example, an order for "productname" and "differentproductname" becomes "productname + differentproductname". - Supplier folders: save each file into a folder that belongs only to the supplier whose ship-from address was used to create that label. Labels must not all land in one shared folder, so it stays clear which supplier each label should be sent to. - Unique filenames within a folder: every file in a supplier's folder must have a unique name, so add a trailing letter to the end of each filename, preceded by a space, starting at "a". - Two separate orders for the same "productname" are saved as "productname a", then "productname b", and so on. - Once the alphabet is used up, continue with two letters the same way spreadsheet columns are labeled, so after "z" comes "aa", then "ab", and so on. - The letter is based on the files currently in that supplier's folder, so once I empty the folder to send everything to the supplier, the lettering automatically restarts at "a". - Run frequency: this label generation process should run automatically on its own. Perhaps about every 30 minutes or so. 9. Logging Produce a log of every order that includes its ASIN, selected carrier, shipping price, and PDF filename, plus any skipped or failed orders with the reason they were skipped or failed, so I can review everything clearly. Data Source (Master Sheet) The script pulls all values for each order from my master Google Sheet (or Excel sheet). I need to be able to add new ASIN rows over time, and the script should automatically work with any new entries without being re-coded. The sheet will include the following for each ASIN: - ASIN - Supplier Address (matches the Ship-From address set in Amazon) - Allowed shipping carrier(s) - PDF filename (based on the product name) - Base package dimensions - Base package weight - Per-unit additional weight (for quantities greater than 1) - Unit-count threshold for switching to the larger package dimension - Larger package dimensions (used once the threshold is passed) - States the ASIN cannot ship to - Alternate supplier to use for restricted states (or "None") - Maximum units allowed per label (for ASINs that require splitting into multiple labels) Scalability The script must be fully driven by the sheet so that adding a new ASIN row, or updating an existing one, works automatically with no code changes.
- Not SureHourly
- 1-3 monthsDuration
- IntermediateExperience Level
$20.00
-
$50.00
Hourly- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:20 to 50
- Last viewed by client:2 hours ago
- Interviewing:1
- Invites sent:2
- Unanswered invites:1
About the client
- United States10:31 AM
- Individual client
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by