VW Reservation Assistant

By | July 25, 2022

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.

Options

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.

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 Reservation IDs

This option will replaces the user’s reservation ID with the word “Hidden” in the screen overlay, This makes it easier to create a shareable screen shot without compromising privacy.

hide reservation ids

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.

VW Reservation Assistant Change Log

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

8 thoughts on “VW Reservation Assistant

  1. Don

    Don’t know if this is a bug or not. When I first went into my reservation after loading the reservation assistant a pop-up window saying that I could place the order and they asked for the $400.00. I checked the box about rules, etc and then said pay. The form went away and that was it. I am under the assumption that there were really not asking for payment it was something random. So far I like what you have done here. An interesting and fun thing to look at when my reservation is first opened to see if there are any changes.

    Reply
    1. Justin Post author

      Thank you for the comment, Don. There is nothing in the extension that would cause that prompt, as it doesn’t modify any data or logic. It really just takes a peek at the fields it cares about and puts them on the screen. From what I’ve witnessed, status code ’02’ is the trigger that tells the front-end that it’s time for you to confirm your build and pay the $400 to lock, so it would be interesting to know where your status lies now. Also, I’ve seen some messages floating around about a bug in the portal that was immediately moving new reservations into a locked status. You may have experienced some offshoot of that, assuming it’s accurate.

      Reply
  2. Dave

    Thanks for this tool. My VW reservation History page shows “2022-08-14 13:38:39” capture date for several weeks. Why it’s NOT getting an updated capture date every time I login to MyVW?

    Please review and respond. Thanks

    Reply
    1. Justin Post author

      The capture date shows you when the value of an attribute was first read by the system. When an attribute value changes, you will see both the new value and the old value. Here is a reservation I created that shows a very exaggerated version of this, as I used it to test. https://id4.misc.ws/reservation_history?reservationId=5d0e2304

      If your values are changing in the portal but not on your history page, make sure that you still have data sharing enabled.

      Reply
  3. Alex D.

    One tiny request, put in an option to hide “refunded”/cancelled reservations from the window if possible, I was toying with multiple to see which might get locked first, and now they’re pushing my only remaining active reservation to the bottom of the list of 3. Also, maybe a sort to always push refunded/cancelled to the bottom + active reservations to the top of the list. Thank you Justin.

    Reply
    1. Justin Post author

      That’s a great idea and very easy to do. I just uploaded version 1.2.13, which contains the code to sort. Active reservations should now show up first. Extensions are updated automatically, but you can force it to update by doing the following:

      Go to “Extensions” in the settings.
      Locate the “VW Reservation assistant” extension and click the “Details” button.
      Click the “Update” button at the top of the screen.

      Reply
      1. Justin Post author

        I can also put an option to hide non-active reservations, but that would take me a little while longer, so I decided to go for the quick win.

        Reply

Leave a Reply

Your email address will not be published.