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.
  • Battery Type – A value representing the battery manufacturer for this vehicle.
  • 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.8 – April 11th, 2023

  • Updated the plugin to send data to a new subdomain as well as point to a new stats page. This was to ease the transition to a new server.

v1.3.7 – December 21st, 2022

  • Added battery type to the list of displayed attributes, provided that it’s not null.

v1.3.6 – December 21st, 2022

  • Added battery type to the data captured.

v1.3.5 – November 30th, 2022

  • Changed the URL on the error page redirect URL to drive user back through authentication to see if that helps a bit more.

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

24 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
  4. Paul Wagner

    1) I’d love to buy you a beer for the usefulness this extension has provided me. If you can drop me your Venmo or PayPal, I’d be happy to chip in for your efforts.
    2) One suggestion for the extension is an option to close the window to make it easier to see the VW window once a user has reviewed the data.
    3) One question: I’m wondering which delivery timeline to trust… for my reservation, the GUI recently changed to “Q1 of 2023” but the extension still shows “Dec 2022 – Jan 2023”. Is there something you’re able to see behind the scenes that should lead me to believe that it may, in fact, be the first quarter of the first quarter of 2023? Here’s hoping, LOL.

    Reply
    1. Justin Post author

      Hey, Paul. Thanks for the comment. I’ll answer all of your questions below.
      1) Please don’t feel obligated to donate, but do know that it’s appreciated if you’re so inclined. I have a PayPal donation link in the settings on the extension, and on the stats page I’ve got one that includes Venmo and PayPal. https://id4.misc.ws/id4stats.
      2) I actually started working on a “minimize” feature a while ago, but I couldn’t get it to work the way I wanted, so I abandoned it. I’ll take another look at it because I completely agree with you.
      3) The API passes back an “ETA value” in some cases and the to/from dates in others. Oddly enough, it passes back both in other cases, like yours. The portal prioritizes the ETA value. I just added it last week, but I’m prioritizing the other. I’ll have to think of a way to show both such that it makes sense. Either way, I’m sure it’s a bit of a guessing and hoping game.

      Reply
  5. Jens Mueller

    Hi, Justin;
    Just want to say that this is really a cool tool and appreciate you developing it.
    I generally use a Mac, so I saw that you had mentioned you’re working on a Safari extension, which is awesome.

    Not being a huge Chrome fan (sorry, Google 🙁 ), how difficult would it be to create an extension/plug in for Firefox?

    Thanks

    Reply
    1. Justin Post author

      Thanks, Jens. I did take a look at Firefox plugins a week or so ago, but it looked like there would be some work to do to convert it, so I’m not sure if I’ll be able to or not. But I will take another look as time permits.

      Reply
  6. Mark P

    From the data you’ve collected, presumably you can determine the relative ordering of all of the Status steps. It might be useful to list them in one of your app pages so others can see what they are and know what comes before what. I have two orders which have/had the following, for example, and it’s not intuitively obvious what ordering exists for these. (I am pasting them in alphabetical order)
    10 : Locked – Request Production
    10 : Order Confirmed by Factory
    10-2 : Factory Approved
    10-2 : Locked – Production scheduling soon

    Reply
    1. Justin Post author

      Thanks. I can put a legend on the reporting screen, as I have done in the extension.

      Reply
      1. Mark P

        That’s my fault, I missed the “?” right next to it. Thanks! I was most confused by what seems to just be a changing in word description for 10 and 10-2. Last month they had some of the words I posted, and this month they have different words. I was thinking that was different status levels, but now it seems like just the text changed.

        Reply
  7. Mark P

    It looks like perhaps you are converting the “Estimated From Delivery” and “Estimated To Delivery” into a range, and while doing so you are choosing to drop the day of the month? What you now report seems to be a month longer than what VW was reporting? If so, you may want to adjust that so it’s consistent with the raw data from VW.

    Example (previously reported):
    Estimated From Date: 12/1/22
    Estimated To Date: 2/1/23

    Example (now reporting):
    Estimated Delivery (Range): Dec 2022 – Feb 2023

    So now it appears the range end date is through the end of Feb, but the raw date previously said it was the beginning of the month.

    Assuming I’m understanding correctly what occurred here, then it seems like you could solve by either switching the month so it would in this case say:
    Estimated Delivery (Range): Dec 2022 – Jan 2023
    or explicitly include the day again:
    Estimated Delivery (Range): Dec 1 2022 – Feb 1 2023

    Thanks!

    PS both times I tried to post, I got a Captcha error yet it never showed me anything I needed to interact with. the first post when I went back and submitted again, it worked. We’ll see if that works with this one also, as it just failed the first time…

    Reply
    1. Justin Post author

      On the portal page, VW is not using the day of the month, which is why I dropped it in favor of displaying it the same way they do. My estimated pickup range, for example, is 11/1/2022 to 1/1/2023, but the portal says Nov 2022 – Jan 2023. I don’t believe the day value is intended to be used, and the range includes the entire month of the “to” month.

      Thanks for the note on the Captcha. It’s using the version that is supposed to determine whether or not you’re a robot transparently, without clicking on crosswalks, etc., but maybe it’s not quite perfect.

      Reply
  8. Mark P

    Justin, could you hide the Commission Number along with the Reservation ID? I would suspect that most people that want to hide one would like to hide both. Or any reason not to? Thanks!

    Reply
    1. Justin Post author

      I will work on that over the next couple of days. I totally agree with you.

      There is a delay in the comments going up because I have to approve them. Otherwise, there would be a ton of spam comments.

      Reply
  9. Jason Hermosa

    Hi! Great tool! I use it daily to eagerly check on the status of my order. One request would be to add latest capture date to the “2023 Similar Vehicle Lookup” table? It would be very helpful to see which changes happened recently, especially status changes on similar builds.

    Reply
  10. Matt

    Hey Justin,

    So VW sent me an email this morning saying my vehicle is leaving the factory and the assistant updated to 15-2 In Production. Not sure if there is a code association issue but it seems like the tracker is behind.

    Thank you

    Reply
    1. Justin Post author

      Hey, Matt. Thanks for the comment. Unfortunately, the status in the portal often seems to lag behind what’s actually happening. This is something that VW would have to do a better job keeping up-to-date.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *