Smallest possible DFA for a language over {0,1}* with third to last symbol 1 should have 4 states not 8. Where am I going wrong in my DFA?
Try inputting 1100 to your DFA. You get to $q_1$, a non-accepting state.

We can show that 8 states are needed using the Myhill–Nerode theorem. The following table gives words separating any two of $000,001,010,011,100,101,110,111$:
$$
\begin{array}{c|cccccccc}
&amp; 000 &amp; 001 &amp; 010 &amp; 011 &amp; 100 &amp; 101 &amp; 110 &amp; 111 \\\hline
000 &amp; &amp; 00 &amp; 0 &amp; 0 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon \\
001 &amp; 00 &amp; &amp; 0 &amp; 0 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon \\
010 &amp; 0 &amp; 0 &amp; &amp; 00 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon \\
011 &amp; 0 &amp; 0 &amp; 00 &amp; &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon \\
100 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; &amp; 00 &amp; 0 &amp; 0 \\
101 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; 00 &amp; &amp; 0 &amp; 0 \\
110 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; 0 &amp; 0 &amp; &amp; 00 \\
111 &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; \epsilon &amp; 0 &amp; 0 &amp; 00 &amp;
\end{array}
$$