The change log for the extension can be found at the bottom of this page.
I created the “VW Reservation Assistant” extension for Chrome to gather more information about Volkswagen ID.4 reservations and display it on the screen as an overlay, eliminating the need to search for the data manually using the browser’s developer tools.
How It Works
When you load the VW reservation screen, the page makes several calls to an API (Application Programming Interface) that sends back information about your reservation and vehicle. Unfortunately, most of this data is never displayed on the screen. If you’re interested in finding it, you have to open up the browser’s development tools and scour through the results of the API calls.
VW Reservation Assistant injects code that overrides the browser’s “fetch” function, which is used for making these API calls, and eavesdrops on the results before passing them on for normal processing. This allows the extension to transparently consume and compile the information it needs to populate the reservation information overlay.
Is It Safe?
Yes, it is safe. VW Reservation Assistant simply consumes data already available in the browser and makes it visible to the user. No data changes occur, and no data is shared unless the user specifically requests it through the extension’s settings.
Share Anonymous Reservation Data
If a user chooses to share anonymous reservation data, every time the extension runs, data about the reservation will be sent back to my server. This data is used in two ways. First, it lets the user see a history of reservation changes over time. Second, it allows for the generation of statistics, available here, that provide interesting and/or useful information about patterns in the data.
This data shared is limited to the following:
- Extension version – This is the version of the extension the user is currently using and helps me debug any problems that might arise, properly classify data, etc.
- Reservation ID – This is a value that uniquely identifies each reservation. However, this is not the ID the user sees in the portal. Instead, the original ID is run through a one-way hash function before sending it across the network. This one-way hash is like a fingerprint for the data to maintain its uniqueness, but it doesn’t allow someone to derive the original value from the hash. In other words, a user’s actual reservation ID is never shared.
- Reservation Status – This is the reservation’s current status, “ACTIVE”, “CANCELED”, “REFUNDED”, etc.
- Creation Time – This is the date and time the user originally reserved the vehicle.
- Order Status Code – A numeric code that identifies the reservation’s current step in the order process.
- Order Requested Date – This is the date that an order was “locked”.
- Model Name – This is the vehicle model, which will be “ID.4” in all cases for now.
- Model Year – The year of the vehicle.
- Trim – VW’s name for the vehicle’s trim, such as “Pro”, “Pro S”, etc.
- Package Name – VW’s name for the vehicle’s package, such as “Pro 1-speed automatic”.
- Model Code – This is a series of characters that identify the model and looks something like this: “E213TN$MAAUE23”.
- Drivetrain – The vehicle’s drivetrain, all-wheel drive vs rear-wheel drive.
- Exterior Color Code – A coded value representing the vehicle’s exterior color.
- Interior Color Code – A coded value representing the vehicle’s interior color.
- MSRP – The manufacturer’s suggested retail price associated with the vehicle.
- Destination Charge – The vehicle’s destination charge.
- Dealer Name – The name of the Volkswagen Dealership that will receive the user’s vehicle.
- Dealer Zip Code – The zip code of the Volkswagen Dealership that will receive the user’s vehicle.
- Dealer Code – This is the unique identifier of the Volkswagen Dealership that will receive the user’s vehicle.
- Estimated Delivery From Date – This is the start date of Volkswagen’s estimated delivery window.
- Estimated Delivery To Date – This is the end date of Volkswagen’s estimated delivery window.
- Estimated Production Date – This is apparently the date that Volkswagen estimates that production of the vehicle will begin. I have seen a placeholder in the data structure, but I have never seen it actually populated.
- ETA Value – This is an estimated delivery date, which may appear prior to the the dates listed above, which appear when the reservation is locked.
No information about the user (vehicle reservation holder) is captured or sent back to the server. Some data, such as the VIN (if populated), may be visible on the screen but will not be transmitted back to the server, as it is personal and not statistically relevant.
Keep in mind that the information provided in the overlay contains your actual VW public reservation ID, not the hashed version that is sent to my server. Therefore, the user should be careful when sharing screen shots, for example, if they wish for this data to remain private.
Show Extended Information
By default, minimal information is shown about a vehicle reservation, focusing mainly on the current status and dates. The “Show extended information” option will show all data fields, including color, drive train, dealer, etc.
Hide Private Data
This option will replaces the user’s reservation ID, VIN, commission number, and dealer name with the word “Hover to view” in the screen overlay. When the user hovers over the field, the actual value will show in a tooltip either above or below the field. This makes it easier to create a shareable screen shot without compromising privacy.
Attempt to Retrieve VIN
When this option is selected, a parameter is added to one of the API calls that gathers reservation information so that it will also pass back the vehicle’s VIN (if available). If the VIN is found, it will be displayed on the screen, but it will not be passed back to the server.
Remove Private Data from Screen Shot
This option is checked by default and does not include the reservation ID, VIN, or dealer from the image produced by the screen shot button.
VW Reservation Assistant Change Log
v1.3.4 – November 29th, 2022
- Added a dialog on the error page that will try to do a little cleanup and let the user log in again. Basically, it deletes a few cookies and clears the session storage, then redirects to the reservations page. I was going to implement this using an optional cookie permission so I could do a deeper cleanup, but it wasn’t liking the existing host permissions, and it was turning into more trouble than it was worth. We’ll see how this goes.
v1.3.3 – November 29th, 2022
- Added support for multiple dealerships. Previously, only the dealership from the current portal reservation was being pulled in. Now, the extension will look up the information for dealerships from other reservations if necessary.
v1.3.2 – November 8th, 2022
- Added VIN check to the API call that looks up all reservations at once, which will hopefully show it even for reservations that aren’t the “active” reservation in the portal. I can’t test this, so you tell me if it’s working. It is still required that you select an option in the settings to retrieve the VIN, as it requires modifying an API call.
- Added help to a couple of fields by clicking on the “(?)” link next to the field header. There is a lot of confusion around the Portal ETA and the Estimated Delivery Range. The former is a newer field that VW started populating, and it doesn’t always align with the range, if it’s available. If I could explain any of VW’s many mysteries, I’d probably already be driving my car around instead of working on this extension.
- Changed the “Hide Reservation IDs” to an overall privacy selection. Instead of saying “Hidden”, the reservation ID, VIN, commission number, and dealer will now say “Hover to view”, and show the data in a tooltip when hovering over the field.
- Added some space between the PayPal and Venmo donation buttons.
v1.3.1 – October 24th, 2022
- Added commission number to the data table. My dealer contacted me regarding my own reservation and told me to write it down. When I looked, it was in the data, so I figured I should add it. This is private data and will not show up in the screen shot done through the tool. It will also not be transmitted back to the statistics server.
- Made it so that both the to/from estimated delivery date range and the ETA provided on the portal will be listed in the table. I don’t think this will alleviate any confusion, but they’ll both be there for your viewing pleasure.
v1.3.0 – October 17th, 2022
- Added a minimize feature to hide the reservation information window if needed. After minimizing, a small, circular icon will appear at the top of the screen. Clicking it will restore the reservation information window and scroll to the top of the page.
- Changed “Statistics” header to “Stats” to alleviate painful bloating.
- Added an order status dialog that is activated by clicking “(?)” next to the order status row header. This will show all of the order statuses.
- Added Venmo link to options page.
- Placed code to recognize browser and turn off screen shot option and donation links for Safari. If you’re actually reading this, I’m experimenting with an extension for Safari, but it is not actually available yet.
v1.2.19 – October 14th, 2022
- Switched to a new set of descriptions for order status codes. These were apparently provided by someone at Volkswagen and fit better for both international and US-built cars.
- Modify delivery date format to match the format on the portal and avoid the confusion. Also began capturing the “etaValue”. If to/from dates are available, they will be displayed. Otherwise, if an ETA value is available, it will be displayed.
- Replaced the little “info” icon that brought users to this page with the version number. When clicked, it now navigates directly to the change log.
- Changed “My History” label to “History” on single reservation view to get a little more room in the header. It was getting awfully crowded up there.
v1.2.18 – September 30th, 2022
- Changed the screen shot so that it trims the image to the visible portion of the window. When multiple reservations were present, it was making the image the height of the entire scrollable reservation information table, although most of it was not visible.
v1.2.17 – September 29th, 2022
- Added a button next to the “Reservation Information” header that will capture a screen shot of the reservation and copy it to the clipboard. The screen shot will probably look a little nutty if there are multiple reservations. I have to figure out why, but it’s using the full, scrollable height of the information box, not just the visible portion, even though it doesn’t all show up in the screen shot.
- Added an option that will filter out private data from the screen shot. This is checked by default.
v1.2.16 – September 27th, 2022
- Added some error checking when parsing data from API calls so that unexpected or missing data won’t cause an exception.
v1.2.15 – September 23rd, 2022
- Fixed a typo on the new option for retrieving VIN.
v1.2.14 – September 23rd, 2022
- Add an option to attempt to retrieve the vehicle’s VIN. This is done by adding a parameter to the API call that gets some of the other reservation details. I made it an option, as it is an instance where I am modifying a call, so I considered it somewhat experimental.
v1.2.13 – September 19th, 2022
- Reservations are now sorted by reservation status so that active reservations will show up first.
v1.2.12 – August 18th, 2022
- Fixed it so only the overlay header will allow you to drag/drop. This is the way it worked previously, but I guess I missed a spot when I was rewriting that bit for the last release.
v1.2.11 – August 18th, 2022
- Added a try/catch around a data parsing block, as well as another validation before parsing. I witnessed some oddly formatted data come in, so one more error check never hurts.
- Made some changes to the event handlers for drag/drop of the overlay to make sure they don’t interfere with any page event handlers.
- Added touch capability to drag/drop the overlay window and made changed the size and position of the window to support mobile devices. Most mobile browsers don’t support extensions, but Kiwi Browser does for Android, and it’s pretty cool.
v1.2.10 – August 14th, 2022
- Added an info button that brings the user to this page.
- Added an option in the settings to hide the reservation IDs on the screen overlay, making it easier to create a shareable screen shot.
- Added a description, “Pending lock”, for order status code “02”. I haven’t seen that documented anywhere, but it seems to fit the pattern I’m seeing.
v1.2.9 – August 10th, 2022
- I discovered that the drivetrain value wasn’t coming through anymore. There was apparently a change to the URL where this is retrieved once the 2023s came online, so I had to account for it.
v1.2.8 – August 10th, 2022
- Added code to potentially get the order status code out of a different block if it’s available. I’ve seen a couple of reservations without order status codes, so I’m hoping this will alleviate that issue.
- Corrected an error I introduced last version while I was correcting something else, which would have let the branch of code I was trying to isolate in v1.2.5 run even with the reservation ID.
v1.2.7 – August 8th, 2022
- Added a description for status code “50”, and changed description for unknown status codes to “Unknown”. I’m feeling like an update to make these value lists downloadable would minimize the number of changes I need to make.
v1.2.6 – August 7th, 2022
- Corrected error in VIN data consumption that I was crafty enough to introduce when I made changes to support multiple reservations. I’m not sure the VIN data is still populated, but I’m accounting for the possibility.
v1.2.5 – August 5th, 2022
- Added code to determine reservation ID of configuration view so that it can be attached to the response. I’ve seen some MSRP and delivery values changing, and this should eliminate the possibility of multi-reservation crosstalk.
v1.2.4 – August 5th, 2022
- Added “Nutmeg” interior color
- Corrected the name of “Stone” color
v1.2.3 – August 4th, 2022
- Add a couple more colors that I missed the first time around.
v1.2.2 – August 4th, 2022
- Added new interior/exterior color codes for 2023 models.
v1.2.1 – August 2nd, 2022
- Added another validation when assigning drivetrain value after seeing some oddities. The value is passed back with the reservation ID, but maybe after a configuration change there is something going on. It’s all a mystery if I can’t witness it firsthand.
v1.2.0 – August 1st, 2022
- Added better support for multiple reservations, including a screen update that shows all reservations in a scrollable box.
- Added “Statistics” button that will take users to a page with some statistics about reservations being tracked. Button will prompt user to share data if they haven’t already.
v1.1.4 – July 29th, 2022
- Added extension version number to information when data sharing is turned on. This is for debugging issues.
v1.1.3 – July 29th, 2022
- Added some error checks in a few places.
- Added code to capture drivetrain (AWD vs RWD).
- Added “Black Cloth” to list of interior colors.
v1.1.2 – July 28th, 2022
- Added some more checks for multiple reservations to avoid data contamination.
- Fixed CRC method that protects user reservation IDs. This is borrowed code, and I didn’t realize that it wasn’t calculating fresh on each call. This was a non-issue before adding the checks in the first bullet point, as I was only calling it once.
- Added code to remove certain attributes, such as the VIN, from data sent to server. I have never seen this value populated, but there’s a field for it in the raw data.
v1.1.1 – July 25th, 2022
- Fixed code to account for canceled reservations, which were periodically getting data mixed in with the current active reservation.
v1.1.0 – July 25th, 2022
- Made the extension’s options pane available from the information overlay for easier access. You will now see a “Settings” link.
- Added an “extended information” setting that shows additional information about the reservation.
- Completed the data sharing functionality that was already in the options. It will now send anonymous data back to this website. The purpose behind this is two-fold. First, it will keep a history of changes to the reservation, so that crucial dates, etc. can be tracked. Second, the data may prove useful in determining vehicle fulfillment patterns from Volkswagen.
- Added a “My History” link to the information overlay that will open a new tab with current/historical information about a reservation.
v1.0.0 – July 16th 2022
- Initial release